Closed xuxiaowei-com-cn closed 2 weeks ago
I do not think server is support JDK17/22
这个参数应该JVM参数设置,一般不是用在jar包执行时可以加上?我是通过sh startup.sh运行的,请问如何加上述参数 @xuxiaowei-com-cn
@lpy0759
# start
echo "$JAVA $JAVA_OPT_EXT_FIX ${JAVA_OPT}" > ${BASE_DIR}/logs/start.out 2>&1 &
JAVA_OPEN_OPTION="--add-opens java.base/java.lang=ALL-UNNAMED" # 手动添加
if [[ "$JAVA_OPT_EXT_FIX" == "" ]]; then
nohup "$JAVA" ${JAVA_OPEN_OPTION} ${JAVA_OPT} nacos.nacos >> ${BASE_DIR}/logs/start.out 2>&1 &
else
nohup "$JAVA" ${JAVA_OPEN_OPTION} "$JAVA_OPT_EXT_FIX" ${JAVA_OPT} nacos.nacos >> ${BASE_DIR}/logs/start.out 2>&1 &
fi
看起来是hessain序列化的时候,随着jdk的升级,部分反射操作可能不兼容了, 如果能通过一些jvm参数支持是最好的, 否则只能升级hassain的版本了。
https://github.com/alibaba/nacos/pull/12449
可能和这个pr有关, 之前有社区同学说sofa的hessain和caucho的hessain冲突,所以PR移除了对caucho 的 hessain的,转向统一使用sofa的hessain
sofa的hessain的概率是封装了一些caucho的hessain之后的打包,可能基础版本的caucho的hessain和之前使用的hessain版本不一致, 然后对jdk17+的支持有问题。
看下能否推动sofa-jraft解决这个问题, 如果不行的话, 下个版本回滚https://github.com/alibaba/nacos/pull/12449 改动。
加上--add-opens java.base/java.lang=ALL-UNNAMED
还是相同报错,只能换2.4.0解决了
add this method into "startup.sh", will start successfully without error log
try_to_add_vm_open_module()
{
if [ "$JAVA_MAJOR_VERSION" -gt "11" ] ; then
echo $JAVA_MAJOR_VERSION
JAVA_OPT="${JAVA_OPT} --add-opens java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED"
fi
}
try_to_add_vm_open_module
# start echo "$JAVA $JAVA_OPT_EXT_FIX ${JAVA_OPT}" > ${BASE_DIR}/logs/start.out 2>&1 & JAVA_OPEN_OPTION="--add-opens java.base/java.lang=ALL-UNNAMED" # 手动添加 if [[ "$JAVA_OPT_EXT_FIX" == "" ]]; then nohup "$JAVA" ${JAVA_OPEN_OPTION} ${JAVA_OPT} nacos.nacos >> ${BASE_DIR}/logs/start.out 2>&1 & else nohup "$JAVA" ${JAVA_OPEN_OPTION} "$JAVA_OPT_EXT_FIX" ${JAVA_OPT} nacos.nacos >> ${BASE_DIR}/logs/start.out 2>&1 & fi
和hessian关系不大,主要是因为nacos配置为JDK1.8,而JDK17+开始使用按模块引入包语法,不兼容之前的语法,不过一定要运行的话可以加入以下命令: 文件:nacos/bin/startup.sh JAVA_OPT="${JAVA_OPT} --add-opens java.base/java.lang=ALL-UNNAMED "
--add-opens java.base/java.lang=ALL-UNNAMED