Tomcat 7.0.73不适用于Java 9

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

-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工作。

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投票稳定。

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

在我的例子中,我为回答Tomcat未运行的问题所做的是设置具有较低Java版本的Tomcat(版本7)(例如Java 8)。

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

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

-Djava.endorsed.dirs = C:\ Program Files \ Apache Software Foundation \ Tomcat 9.0 \ endorsed不受支持。 通过可升级模块的概念,将支持模块化forms的认可标准和独立API。

要修复此错误,您需要安装/更新Eclipse Web Tools Platform(WTP)到V3.9.4或更高版本。

选择“帮助”>“安装新软件”…选择或添加以下URL: http : //download.eclipse.org/webtools/repository/oxygen检查Web工具平台(WTP)3.9.4选择“下一步”并按照说明操作

在eclipse中重新配置tomcat。