从 Netbeans 启动 Tomcat 失败

2022-08-31 14:51:06

我从Netbeans IDE 7.4启动Apache Tomcat 6时遇到问题(在7.3版本上,我遇到了同样的麻烦。其他人提到这个问题也存在于其他版本中,如8.0等)。

我做了什么:

  • 删除已安装的Tomcat 7(不删除它,我有同样的困难)
  • 添加新的服务器,从Apache Tomcat网站下载(版本apache-tomcat-6.0.39,其他版本我有同样的问题)
  • 我的服务器位置: D:\apache-tomcat-netbeans
  • 系统变量CATALINA_HOME: D:\apache-tomcat-netbeans
  • 系统变量 JAVA 主页: C:\Program Files\Java\jdk1.7.0_51\
  • tomcat user:我让netbeans创建新用户,用密码tomcat调用tomcat。当我在添加服务器后打开{tomcat}\conf\tomcat-users.xml文件时,有关于我的用户的信息:

    <用户密码=“tomcat” roles=“manager,admin” username=“tomcat”/ >

当我现在点击“开始”时,我得到了“Tomcat的启动失败”。

我的怀疑:

  • 我正在以管理员身份在Windows 7上工作,所以我认为这不是文件权限的问题。
  • 禁用代理没有帮助。
  • 日志:只创建了一个日志文件:localhost.2014-03-06.log它完全为空。
  • 以管理员身份启动 Netbeans 并没有帮助。
  • 从命令行一切都很好,我在正常或调试模式下启动没有问题(catalina.bat jpda启动启动.bat)

答案 1

它至少会影响 NetBeans 版本 7.4 到 8.0.2。它首先从 8.0 版报告,并在 NetBeans 8.1 中修复。对于任何tomcat版本(确认版本7.0.56到8.0.28),它都会有问题。

具体细节被描述为 Netbeans 错误 #248182

此问题还与提及以下错误输出的帖子有关:

“127.0.0.1*”未被识别为内部或外部命令、可操作程序或批处理文件。

对于从zip文件安装的tomcat,我通过更改tomcat目录中的文件来修复它。catalina.batbin

catalina.bat 文件中查找波纹管配置。

:noJuliConfig
set "JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%"

:noJuliManager
set "JAVA_OPTS=%JAVA_OPTS% %LOGGING_MANAGER%"

并通过删除双引号将其更改如下:

:noJuliConfig
set JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%

:noJuliManager
set JAVA_OPTS=%JAVA_OPTS% %LOGGING_MANAGER%

现在保存您的更改,并从 NetBeans 中启动您的 tomcat。


答案 2

这会影响:

  • 从8.5.3开始的所有版本的Tomcat。
  • Netbeans 8.1 之前的所有版本(在 Netbeans 8.2 中已修复)。

这是因为 Netbeans 没有“看到”tomcat 启动,尽管它启动得很好。

我已经向 NetBeans 提交了 Bug #262749

解决方法

在该文件中,在 HTTP/1.1 的元素中,添加以下属性:。server.xmlConnectorserver="Apache-Coyote/1.1"

例:

<Connector
  connectionTimeout="20000"
  port="8080"
  protocol="HTTP/1.1"
  redirectPort="8443"
  server="Apache-Coyote/1.1"
/>

原因

原因是在 8.5.3 之前,默认设置是将服务器标头设置为 ,而自 8.5.3 以来,此默认值现在已更改为空白。显然,Netbeans 会检查此标头。Apache-Coyote/1.1

也许将来我们可以期待 netbeans 中的修复程序来解决此问题。

我能够将其追溯到文档的更改。

雄猫 8.5

“覆盖 http 响应的服务器标头。如果设置,此属性的值将覆盖 Web 应用程序设置的任何服务器标头。如果未设置,则使用应用程序指定的任何值。如果应用程序未指定值,则不会设置服务器标头。

雄猫 8.0

“覆盖 http 响应的服务器标头。如果设置,此属性的值将覆盖 Tomcat 默认值和 Web 应用程序设置的任何服务器标头。如果未设置,则使用应用程序指定的任何值。如果应用程序未指定值,则使用 Apache-Coyote/1.1。除非你是偏执狂,否则你不需要这个功能。

这就解释了从版本 8.5.3 开始需要显式添加 server 属性。


推荐