从 Netbeans 启动 Tomcat 失败

Posted

技术标签:

【中文标题】从 Netbeans 启动 Tomcat 失败【英文标题】:Starting of Tomcat failed from Netbeans 【发布时间】:2014-04-09 03:56:44 【问题描述】:

我在从 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 HOME:C:\Program Files\Java\jdk1.7.0_51\

tomcat用户:我让netbeans创建新用户,叫tomcat,密码为tomcat。添加服务器后打开 tomcat\conf\tomcat-users.xml 文件时,有关于我的用户的信息:

当我现在单击“开始”时,出现“Tomcat 启动失败”。

我的怀疑:

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

【问题讨论】:

检查您的服务器日志,可能位于 D:\apache-tomcat-netbeans\logs\ 之类的位置。可能是由于端口冲突。但是你的日志会有这样的信息。 检查现有的日志文件应该始终是您做的第一件事。 日志完全为空。只创建了一个文件:localhost.2014-03-06.log 您是否尝试过从命令行启动服务器?我见过由于配置错误而立即失败的情况,您可能会在那里收到更好的错误消息... 从命令行一切正常,在正常或调试模式下启动没有问题。 【参考方案1】:

为了让 NetBeans 能够与 tomcat 交互,它需要用户作为 netbeans 中的设置在 tomcat-users.xml 文件中正确配置。 NetBeans 可以自动执行此操作。

即在tomcat-users.xml 内,您可以在$CATALINA_HOME/conf$CATALINA_BASE/conf 中找到,

    确保为用户(在 netbeans 中选择)添加了script-manager 角色

例子,改变

<user password="tomcat" roles="manager,admin" username="tomcat"/>

<user password="tomcat" roles="manager-script,manager,admin" username="tomcat"/>
    确保声明了manager-script 角色

添加

<role rolename="manager-script"/>

实际上 netbeans 在线帮助错误地指出:

用户名 - 指定 IDE 用于登录服务器管理器应用程序的用户名。 用户必须与经理角色相关联。 IDE 第一次启动 Tomcat Web 服务器时,例如通过开始/停止菜单操作或通过从 IDE 执行 Web 组件,IDE 将使用随机生成的密码添加到 tomcat-base-path/conf/tomcat-users.xml 文件中的管理员用户。 (右键单击“服务”窗口中的 Tomcat Web 服务器实例节点并选择“属性”。在“属性”对话框中,“基本目录”属性指向 base-dir 目录。)tomcat-users.xml 文件中的管理员用户条目类似于以下:&lt;user username="idea" password="woiehh" roles="manager"/&gt;

角色应该是manager-script,而不是manager

如需更完整的tomcat-users.xml 文件:

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="manager-script"/>
  <role rolename="manager-gui"/>
  <user password="tomcat" roles="manager-script" username="tomcat"/>
  <user password="pass" roles="manager-gui" username="me"/>
</tomcat-users>

why am I getting the deployment error? 上还有另一个不错的帖子

【讨论】:

不幸的是它没有帮助。没有什么变化。我的 tomcat-users.xml 现在是: 当我从 tomcat 中删除 Root 文件夹并从 Netbeans 启动它时,tomcat 日志文件已正确创建,错误:严重:启动静态资源时出错。 java.lang.IllegalArgumentException:文档库 C:\Tomcat\webapps\ROOT 不存在或不是可读目录【参考方案2】:

它至少会影响 NetBeans 版本 7.4 到 8.0.2。它最初是从 8.0 版报告的,并在 NetBeans 8.1 中得到修复。任何 tomcat 版本都会出现问题(已确认版本 7.0.56 到 8.0.28)。

具体描述为Netbeans bug #248182。

这个问题也与帖子中提到以下错误输出有关:

'127.0.0.1*' 不是内部或外部命令、可运行程序或批处理文件。

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

在您的 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。

【讨论】:

适用于在 Netbeans 8.0.1 上运行的 Tomcat 7.0.56 没有帮助我 - netbeans 8.0.2,tomcat 8.0.15 在 Windows 上使用 NetBeans 8.0.2 和 Tomcat 8.0.15!知道问题到底是什么吗?我不明白引号有什么不同。 在 Windows 8 上,我必须以管理员身份打开记事本才能完成此操作。 @BlackSwan 请参阅 my answer 特定于 tomcat 8.5.3 及至少到 netbeans 8.1。【参考方案3】:

这会影响:

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

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

我已提交Bug #262749 with NetBeans。

解决方法

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

例子:

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

原因

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

也许在未来我们可以期待在 netbeans 中解决这个问题。

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

Tomcat 8.5:

"覆盖 http 响应的服务器标头。如果设置,则值 因为这个属性会覆盖任何由 web 设置的 Server 标头 应用。如果未设置,则应用程序指定的任何值都是 用过的。如果应用程序未指定值,则没有服务器 标头已设置。”

Tomcat 8.0:

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

这解释了从 8.5.3 版本开始需要显式添加服务器属性。

【讨论】:

这也是 brew 安装版本的确切解决方案! 我必须同时应用已接受的答案和 this 才能正常工作 我做这个配置是为了让 NetBeans IDE 8.1 和 apache-tomcat-8.5.6 的组合工作。谢谢。 此解决方法也适用于 Apache Tomcat/8.5.28 NetBeans IDE 8.1。 解决方法适用于 Windows 10 上的 NB 11.1 和 Tomcat 9.0.6,谢谢。【参考方案4】:

另外,很可能是代理设置的问题。

任何没有克服 Tomact 启动问题的人 - 尝试在 NetBeans 中选择 No Proxy 在工具 -> 选项 -> 常规选项卡中。

它帮助了我。

【讨论】:

在企业环境中,您的其余集成可能需要代理才能正常工作,包括接收 netbeans 更新,以及对包括 github 在内的外部存储库的 git 访问。保留代理的更好选择是在代理上设置 localhost 例外。 是的,你完全正确。我的案例适用于您的网络不使用代理时的情况。 哦,出乎意料的是,这对我有用,在按照上面的建议更改 server.xml 之后(仍然有同样的问题):Netbeans 8.1 + TomEE 7.1.0(tar.gz 版本) 这里的解决方案都没有帮助我,但是 Netbeans 的人为我提供了一个文件,该文件可以在 Mac Catalina 上运行 Netbeans 10.2 和 Tomcat 8.x 和 9.x - 请参阅我的回答 @987654321 @【参考方案5】:

我遇到了同样的问题,但上面的答案都没有奏效。 我的解决方案是恢复与 Tomcat 捆绑的Manager web application。

【讨论】:

【参考方案6】:

这里的答案都没有解决我的问题(截至 2020 年 2 月),所以我在 https://issues.apache.org/jira/browse/NETBEANS-3903 提出了一个问题,Netbeans 解决了这个问题!

他们正在处理一个拉取请求,因此修复将很快在未来的 .dmg 安装程序中,但同时您可以复制错误中引用的文件并替换您的 netbeans 模块文件夹中的文件。

提示 - 如果您右键单击 Applications > Netbeans 并选择 Show Package Contents ,那么您可以在您的 Netbeans 文件夹中找到并替换他们引用的文件 org-netbeans-modules-tomcat5.jar,例如在 /Applications/NetBeans/Apache NetBeans 11.2.app/Contents/Resources/NetBeans/netbeans/enterprise/modules 中

【讨论】:

太棒了!感谢您联系开发人员并帮助他们解决此问题 这对我有用,谢谢。我正在使用在 macOS High Sierra 上运行的 Netbeans 11.3、Tomcat 9.0.39。

以上是关于从 Netbeans 启动 Tomcat 失败的主要内容,如果未能解决你的问题,请参考以下文章

部署错误:Tomcat启动失败,服务器8080端口已被占用

NetBeans:无法启动 Tomcat(“系统找不到指定的文件”)

将war文件放在tomcat服务器上后如何启动netbeans项目?

TomEE 启动但 Netbeans 给出“启动失败”错误

我用Netbeans写的程序,tomcat为啥每次都要重新启动一下才能运行啊???

如何使用 Netbeans 连接到远程 tomcat?