Tomcat 7.0.73 不适用于 java 9

Tomcat 7.0.73 doesn't work with java 9

无法使用 java 9 启动基于 tomcat 的应用程序,因为 catalina.sh 中的默认 "java.endorsed.dirs" 选项。

-Djava.endorsed.dirs=/usr/local/share/tomcat/endorsed is not supported. Endorsed standards and standalone APIs in modular form will be supported via the concept of upgradeable modules. 
Error: Could not create the Java Virtual Machine. 
Error: A fatal exception has occurred. Program will exit.

有解决办法吗?

您必须修改脚本 bin/catalina.sh 才能使其正常工作。

bin/catalina.sh中有一堆这样的行:

  exec "$_RUNJDB" "$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
    -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
    ...

只需删除其中的第二行(带有 -Djava.endorsed.dirs 的那一行),您就可以恢复业务了。

我正在考虑改进这些脚本,以便在值为空时不向 JVM 提供 -Djava.endorsed.dirs(如果您使用的是 Java 9,情况应该如此)。

更新 2017-11-06

看起来 r1810284 应该可以解决 endorsed.dirs 问题。预计此修复程序将包含在 Tomcat 7.0.83(或下一个 7.0.x 版本通过投票)中。

更新 2018-03-07

包含此修复的 Apache tomcat 7.0.x 的第一个正式版本是 Apache Tomcat 7.0.84,在 2018-01-24 投票稳定。

就我而言,我为回答 Tomcat 而不是 运行 的问题所做的是将 Tomcat (版本 7)设置为较低的 Java 版本(例如 Java 8).

然后,在startup.shshutdown.shcatalina.sh 我添加了以下内容:

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`;

以上问题已在更高版本的 Eclipse 中修复,但不幸的是,随着 Java10 的发布,它再次出现。这是我的研究: 最初,我安装了 Java 10 和 Eclipse Oxygen 3,这给了我你在问题中提到的同样的错误。但是,在我安装 Java 9 并将我的 Apache tomcat 运行时服务器指向它的那一刻,错误消失了。

要修复此错误,您需要install/update将 Eclipse Web 工具平台 (WTP) 升级到 3.9.4 或更高版本。

Select 帮助 > 安装新软件... Select 或添加以下内容 URL:http://download.eclipse.org/webtools/repository/oxygen 检查 Web 工具平台 (WTP) 3.9.4 Select "Next" 并按照说明进行操作

在eclipse中重新配置tomcat。

如果您的 Tomcat 运行时使用早于 Java 9 的 JRE 并创建和 运行 具有该 运行 时间的服务器,则可能会出现此症状。然后编辑 Tomcat Runtime 以使用 Java 9 并尝试启动服务器。当服务器为 运行 和较早的 JRE 时,会发生一个“-Djava.endorsed.dirs”参数被添加到启动配置。 运行切换到Java9后在服务器上运行时,“-Djava.endorsed.dirs”参数被视为用户添加的VM参数并保留,导致错误。

最简单的修复方法是重新创建服务器。您也可以在服务器视图中右键单击服务器,然后 select 打开。在打开的 window 中,单击“常规”部分底部的 "Open launch configuration" link。在打开的对话框中,切换到参数选项卡并在 "VM arguments" 部分中,编辑掉“-Djava.endorsed.dirs”参数并单击确定。您现在应该可以启动服务器了。

我不确定但是..

第一步--> 它对我有用,我只是从 eclipse

中删除服务器

第 2 步 --> 重新启动并再次添加服务器 (tomcat 7) Tomcat v7.0 服务器位于本地主机

在 运行 配置 -> 参数 -> VM 参数 尝试删除

-Djava.endorsed.dirs="C:\Program Files\Apache Software Foundation\Tomcat 8.5\endorsed"

您必须删除 -

"-Djava.endorsed.dirs="/home/ttlaptop/Downloads/apache-tomcat-7.0.105/endorsed"

来自运行配置,然后tomcat将开始