当前位置: 首页 > 后端技术 > Java

Java11下如何运行RocketMQ

时间:2023-04-01 14:51:25 Java

最新版本的RockerMQ是4.9.2,不能在Java11下运行:[rocketmq@localhost00-rocketmq-4.9.2]$java-versionopenjdkversion"11.0.13"2021-10-19LTSOpenJDKRuntimeEnvironment18.9(build11.0.13+8-LTS)OpenJDK64-BitServerVM18.9(build11.0.13+8-LTS,mixedmode,sharing)[rocketmq@localhost00-rocketmq-4.9.2]$bin/mqnamesrv-Djava.ext.dirs=/jre/lib/ext:/home/rocketmq/00-rocketmq-4.9.2/bin/../lib:/lib/ext不受支持。请改用-classpath。错误:无法创建Java虚拟机。错误:发生致命异常。程序会退出相关issue在这里,已经修复,4.9.3版本会修复。我们可以看到,运行失败主要是因为启动脚本中的JVM参数问题。话虽如此,我还是建议大家在发布类似的开源项目时,不要在脚本中包含大量的-XX:调优参数。这些应该留给用户去调整,因为你不知道用户用的是什么JVM。不要强迫用户“优化”,留个坑就行。由于是脚本的问题,可以修改脚本:打开runserver.sh和runbroker.sh(Windows下对应.cmd后缀),进行如下修改(修改前记得备份):找到文件包含-Djava.ext.dirs参数行,删除或注释掉该行;找到包含-Xloggc参数的行,删除或注释掉该行;找到包含-XX:+UseGCLogFileRotation参数的行,删除或注释掉该行;find在包含exportCLASSPATH=的行中(在文件的前面部分),将等号后面的内容更改为.:${BASE_DIR}/conf:${BASE_DIR}/lib/*:${CLASSPATH}findcontains-XX:-UseLargePages参数行,在其下添加一行JAVA_OPT="${JAVA_OPT}--add-exportsjava.base/jdk.internal.ref=ALL-UNNAMED"这样修改后,RocketMQ在Java11下可以成功启动.