Tomcat7.0.73不适用于Java9

Tomcat7.0.73不适用于Java9,java,tomcat,tomcat7,java-9,Java,Tomcat,Tomcat7,Java 9,无法使用java 9启动基于tomcat的应用程序,因为catalina.sh中有默认的java.annowered.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.

无法使用java 9启动基于tomcat的应用程序,因为catalina.sh中有默认的java.annowered.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中有很多类似的行:

只需删除其中的第二行,即在每种情况下都带有-Djava.annowed.dirs的行,您就应该重新开始工作

我正在考虑改进这些脚本,以便在值为空时不向JVM提供-Djava.annowered.dirs,如果使用Java 9,应该是这样

更新2017-11-06

看起来应该可以解决背书的.dirs问题。希望Tomcat7.0.83或下一个7.0.x版本中包含此修复程序

更新2018-03-07


ApacheTomcat 7.0.x的第一个正式发行版包含此修复程序,是ApacheTomcat 7.0.84,在2018年1月24日投票稳定。

在我的情况下,我所做的是回答tomcat未运行的问题,将tomcat版本7设置为较低的Java版本,例如Java 8

然后,在startup.sh、shutdown.sh和catalina.sh中,我添加了以下内容:

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

上面的问题在Eclipse的后续版本中得到了修复,但不幸的是,它在Java10的发行版中再次出现。以下是我的研究:
最初,我安装了Java10和EclipseOxygen3,这与您在问题中提到的错误相同。但是,在我安装Java 9并将Apache tomcat运行时服务器指向它的那一刻,错误就消失了。

要修复此错误,您需要将Eclipse Web工具平台WTP安装/更新到3.9.4或更高版本

选择帮助>安装新软件。。。 选择或添加以下URL: 检查Web工具平台WTP 3.9.4 选择下一步并按照说明操作


在eclipse中重新配置tomcat。

如果您的tomcat运行时使用的JRE早于Java 9,并且使用该运行时创建并运行服务器,则可能出现此症状。然后编辑Tomcat运行时以使用Java9并尝试启动服务器。当服务器使用早期JRE运行时,会在启动配置中添加-Djava.annowned.dirs参数。在切换到Java 9后运行服务器时,会将-Djava.annowered.dirs参数视为用户添加的VM参数并保留,从而导致错误

最简单的修复方法是重新创建服务器。您也可以在servers视图中右键单击服务器,然后选择Open。在打开的窗口中,单击“常规”部分底部的“打开启动配置”链接。在打开的对话框中,切换到Arguments选项卡,在VM Arguments部分,编辑-Djava.annowered.dirs参数,然后单击OK。您现在应该可以启动服务器了。

我不能确定,但是

步骤1-> 这对我来说很有效,我只是从eclipse中删除了服务器

第2步-> 重新启动并再次添加服务器tomcat 7
本地主机上的Tomcat v7.0服务器运行配置->参数->虚拟机参数 尝试删除

-Djava.annowed.dirs=C:\Program Files\Apache软件基金会\Tomcat 8.5\annowed

你必须移除-

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


从运行配置开始,然后tomcat将开始

好的,我已经意识到并提出了一个解决方案,所有这些都归结为一点,即对于java 9,出于适应性的原因,您需要使用tomcat 9。简言之,请尝试使用apache-tomcat-9.0.0.M26和jdk-9+181执行应用程序,以找出确切的故障。WTP人员已在执行类似的检查。如果您尚未更改catalina.sh,我可以自愿为其提供修补程序。@Kilokahn修补程序始终受欢迎!在Github上发布到用户列表或fork+PR。我在Github上添加了PR-我收回了PR,因为最新的代码似乎已经处理好了。我们什么时候可以期待下一个7.x版本?@Kilokahn感谢您的贡献。请随时针对Tomcat或任何其他ASF项目制定额外的PRs。Bugzilla是一个寻找低垂果实的好地方,我们有意将其作为新贡献者的介绍。如果您想更多地参与进来,请加入用户和开发人员邮件列表。我想使用java9+版本运行,因此此解决方案对我不起作用,但由于我们正在编辑catalina.sh,那么我们可以简单地添加代码,完全按照上面的建议删除已认可的dir属性。谢谢,我几分钟前刚刚这么做,上面的评论不在我的范围之内,对不起……我只是把我的评论留给那些刚将java版本升级到9,却发现tomcat7无法工作的人……最好修改或创建,如果不存在conf/setenv.sh,则不修改Tomcat附带的任何脚本。对Java 10及以上版本的支持在以后的版本中得到修复。对Java 10及以上版本的支持在以后的版本中得到修复。
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`;