当前位置: 首页 > 知识库问答 >
问题:

nacos2.2.3 支持jdk17吗?

小牛22984
2023-09-04

我使用openjdk17启动nacos报错

/home/software/java-17-openjdk/bin/java -Djava.ext.dirs=/home/software/java-17-openjdk/jre/lib/ext:/home/software/java-17-openjdk/lib/ext  -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/software/nacos/logs/java_heapdump.hprof -XX:-UseLargePages -Dnacos.member.list= -Xloggc:/home/software/nacos/logs/nacos_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -Dloader.path=/home/software/nacos/plugins,/home/software/nacos/plugins/health,/home/software/nacos/plugins/cmdb,/home/software/nacos/plugins/selector -Dnacos.home=/home/software/nacos -jar /home/software/nacos/target/nacos-server.jar  --spring.config.additional-location=file:/home/software/nacos/conf/ --logging.config=/home/software/nacos/conf/nacos-logback.xml --server.max-http-header-size=524288-Djava.ext.dirs=/home/software/java-17-openjdk/jre/lib/ext:/home/software/java-17-openjdk/lib/ext is not supported.  Use -classpath instead.Error: Could not create the Java Virtual Machine.Error: A fatal exception has occurred. Program will exit.

环境变量配置:

export JAVA_HOME=/home/software/java-17-openjdkexport PATH=$JAVA_HOME/bin:$PATH

共有1个答案

徐俊楚
2023-09-04

是支持jdk17的。官方的文档上明确写了是1.8及以上。

这里的错误,-Djava.ext.dirs=/home/software/java-17-openjdk/jre/lib/ext:/home/software/java-17-openjdk/lib/ext is not supported. Use -classpath instead. 意思是这样的,java.ext.dirs 这个参数在java9之后已经被移除了,在java17上已经不支持了。

nacos启动脚本 startup.sh 对这个问题也有做特殊处理:
image.png

只有版本小于9才会使用java.ext.dirs这个参数。

所以问题就在于,这个这个脚本判断错了jdk的版本,导致了启动的时候使用错参数了。
处理这个问题,有两个方法:1. 修改脚本,兼容你的jdk版本号的输出。2. 重新下载一个其他的jdk版本。

我这里使用 openjdk:17-ea-slim-buster 这个版本的docker镜像是能正常启动的。

你可以贴一下 java -version 这个命令的输出是什么。

 类似资料:
  • 对于Requests,如果你有问题或者建议,可以通过下面几种方法得到支持: StackOverflow 如果你的问题不包含敏感或私有信息,或者你能将这些信息匿名化,那你就可以在 StackOverflow 上使用 python-requests 标签提问。 发送推文 如果你的问题在140个字符内描述,欢迎在 twitter 上发送推文至 @kennethreitz, @sigmavirus24,

  • Jython 是在 Java 平台 (JVM) 运行的 Python 实现。这个文档将让你在Jython之上运行Django。 Installing Jython Django使用Jython 2.7b2及更高版本。有关下载和安装说明,请参阅Jython网站。 Creating a servlet container 如果你只是想试验Django,请跳到下一节; Django包含一个可以用于测试的

  • Babel 的社区非常庞大并且增长速度很快,伴随着我们成长的同时我们希望保证人们总能获取他们需要的所有资源。 所以我们提供了数种途径来提供支持。 谨记在所有的这些沟通渠道里我们都共同遵守一套行为准则。 破坏准则的行为会被处理。 所以请阅读它并在与他人互动时注意自己的行为。 同时我们也在寻求发展一个自我支持式的社区,为那些始终热诚奉献的人们。 如果别人问的问题你恰好知道答案,请不吝花费几分钟帮帮他们

  • 如何让Java8与Eclipse一起工作? 我遵循了这个指南,但不起作用。我也看过EclipseJava8维基页面,但是他们没有解释如何处理签出的git存储库。

  • suEXEC特性使得Apache可以使用与调用web服务器的用户不同的用户身份来运行CGI和SSI程序。而通常情况下,CGI或者SSI程序执行时使用和web服务器相同的用户身份。 正确运用该特性,可以减少很多因为提供用户执行私有CGI或者SSI程序所带来的安全风险。但如果配置不当的话,则可能引起很多问题,使你的计算机产生更多的安全漏洞。如果你对管理 setuid root 程序以及可能导致的安全问

  • 有些项目的代码组织中使用了 git submodule 功能,但是如果某个项目引用的 submodule 是私有的,会导致代码构建/持续集成时拉取代码失败。这时可以参考下面的流程进行操作达到支持私有 submodule 的目的。 下面的例子以 Github 为例 创建项目 按照正常流程创建代码构建项目,在项目“设置”页面可以查看 Deploy Key。 复制 Deploy Key 点击如下所示红框