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删掉后保存,再运行就好了。
这问题搞了我一整天,还是前几天挖的坑,我吐了。