"jdk10消息 注意:捕获了JDK_JAVA_OPTIONS:"

7
我在使用JDK10的Tomcat 8.5时遇到了一个奇怪的问题。它可以正常启动,但是当我发出停止命令时,会出现以下提示:

注意:捕获到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

Java进程仍然在运行,因此我需要杀死PID才能停止它。
有人知道这是什么问题吗?我需要做些什么来解决它吗?
谢谢!

1
https://dev59.com/EGcs5IYBdhLWcg3wym_D#12577771 - user330315
1
这个注释意味着某人将JDK_JAVA_OPTIONS变量设置为消息中所见的值。你确定它是在关闭时打印的吗?如果是这样,那么就意味着某个东西正在启动VM,并且正在获取此变量的值。至于该值,则--add-open选项表明某些东西(Tomcat?)必须正在黑入JDK内部。我希望Tomcat(或其他人)已经有一个问题来解决这个问题。 - Alan Bateman
这是从tomcat.apache.org下载的干净的Tomcat 8.5安装。以下是我在setenv.sh中设置的JAVA_OPTS配置: export JAVA_HOME=/usr/java/jdk10 JAVA_OPTS="-Xms64M -Xmx64M -server -XX:+UseParallelGC" export JAVA_HOME JAVA_OPTS - kipper3d
OpenJDK 11正在执行相同的操作。注意:捕获了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。 - kipper3d
2个回答

1

特性而非缺陷

根据这个邮件列表线程,这些消息是指Tomcat在Java 9及以后版本上运行时设置的选项,以在Java内部发生变化时维护重要功能(如内存泄漏预防/检测)。我猜这些变化与Java平台模块系统有关。

因此,这是一种特性,而非缺陷。

Java进程仍在运行

macOS Mojave上使用AdoptOpenJDK的Java 13.0.1运行时,我没有看到这种行为。在使用Tomcat 9.0.27执行shutdown.sh后,在Activity Monitor.app中找不到任何java进程。

我怀疑你的java进程继续运行是由于其他原因造成的。例如,从经验上讲,线程池未关闭导致了executor service

当退出Tomcat 9时,我会收到类似于您发布的消息:

注意:捡起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


@basil_bourque 所以没有任何“修复”可以解决这个消息。这有点令人难过,也有点无知,来自“开发者们”。 - Pranav

1

我也遇到了同样的问题。我使用命令行进入Tomcat日志:

$ sudo tail -f / opt / tomcat / log / catalina.out

在重新启动服务时,请查看最新的消息。

一种解决方案是注释掉以下行:

Environment = 'CATALINA_OPTS = -Xms512M -Xmx1024M -server -XX: + UseParallelGC'

tomcat.service守护程序中并重新启动服务。该行控制分配的内存并阻止服务的上升。这对我有用,我将仅将Tomcat用于本地测试和学习,而不是作为真正的servlet服务器,这对我来说无关紧要,但我认为这不是生产Tomcat的理想解决方案。

检查Apache2错误日志与我使用catalina.out相同的命令可能也会有所帮助。

我希望对其他人有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接