win11上jdk17命令行为8及tomcat9报错解决

jdk17下命令行java -version显示为java8

之前由于某些需求,于是想把IDEA下载下来的java17变成本地默认环境,以替代java8,之后因每次输入java -version时会返回8的内容,而javac版本则为17,网上查是说需要jre,于是照着网上去生成一个jre来,并写入环境变量JRE_HOME:
jdk17生成jre 管理员运行 bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre

环境变量:
在这里插入图片描述
PATH:
在这里插入图片描述
但奇怪的是依旧无效,之后无意间替换了PATH中的顺序,即把以上2个都往上移就搞定了,后面查原因发现PATH有个变量是在JAVA前面的,也是导致java版本为8的原因:
C:\ProgramData\Oracle\Java\javapath
查看文件夹为:
在这里插入图片描述

把他移下去即可。

tomcat9报错

报错内容:

NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
WARNING: Unknown module: java.rmi specified to --add-opens
Exception in thread "main" java.lang.NoClassDefFoundError: java/util/logging/Logger
        at org.apache.juli.logging.DirectJDKLog.<init>(DirectJDKLog.java:61)
        at org.apache.juli.logging.DirectJDKLog.getInstance(DirectJDKLog.java:181)
        at org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:116)
        at org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:139)
        at org.apache.juli.logging.LogFactory.getLog(LogFactory.java:194)
        at org.apache.catalina.startup.Bootstrap.<clinit>(Bootstrap.java:52)
Caused by: java.lang.ClassNotFoundException: java.util.logging.Logger
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
        ... 6 more

[已退出进程,代码为 1]

一度查找原因无果
找过四种方式:

  • lib文件夹包没有
  • jdk17与tomcat9不兼容(9支持向上兼容)
  • service.bat重新安装
  • tomcat9w.exe配置为默认java

依旧无效,后来看有一个评论说删掉JRE_HOME变量就好了:
tomact正常启动,但是在日志文件报错java.lang.NoClassDefFoundError: java/util/logging/Logger
虽说他说的是在linux上的/etc/profile,但我抱着试一试的态度,把之前环境变量中的JRE_HOME删掉后保存,再运行就好了。
在这里插入图片描述这问题搞了我一整天,还是前几天挖的坑,我吐了。

猜你喜欢

转载自blog.csdn.net/qq_40519543/article/details/123877049
今日推荐