从Netbeans启动Tomcat失败

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

我做了什么:

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

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

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

我的怀疑:

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

它至less会影响NetBeans 7.4到8.0.2。 它是从8.0版本开始报告的,并在NetBeans 8.1中修复。 这将有问题的任何tomcat版本(确认版本7.0.56至8.0.28)。

具体描述为Netbeans bug#248182 。

此问题也与提及以下错误输出的post有关:

“127.0.0.1 *”不被识别为内部或外部命令,可操作程序或batch file。

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

在你的catalina.bat文件中find下面的configuration。

 :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。

这会影响:

  • 所有版本的Tomcat从8.5.3开始。
  • Netbeans的所有版本高达8.1(它在Netbeans 8.2中是固定的)。

这是因为Netbeans不能“看到”tomcat已经启动,虽然它启动得很好。

我已经用NetBeans提交了Bug#262749 。

解决方法

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应用程序设置的任何服务器头,如果未设置,则使用应用程序指定的任何值;如果应用程序没有指定值,则没有服务器头被设置“。

Tomcat 8.0 :

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

这就解释了自8.5.3版以来显式添加服务器属性的必要性。

另外,代理设置很可能出现这个问题。

任何没有克服Tomact问题的人 – 尝试在NetBeans中selectTools – > Options – > General选项卡中的No Proxy

它帮助了我。

要使NetBeans能够与tomcat进行交互,需要在netbeans中设置用户,使其在tomcat-users.xml文件中正确configuration。 NetBeans可以自动完成。

也就是说,在你可以在${CATALINA_HOME}/conf${CATALINA_BASE}/conffind的tomcat-users.xml

  1. 确保用户(如netbeans中所选)添加了script-managerangular色

例如,更改

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

 <user password="tomcat" roles="manager-script,manager,admin" username="tomcat"/> 
  1. 确保manager-scriptangular色被声明

 <role rolename="manager-script"/> 

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

用户名 – 指定IDE用于login到服务器pipe理器应用程序的用户名。 用户必须与经理angular色关联 。 IDE首次启动Tomcat Web服务器时,例如通过启动/停止菜单操作或通过从IDE执行Web组件,IDE将具有随机生成密码的admin用户添加到tomcat-base-path/conf/tomcat-users.xml文件。 (右键单击“服务”窗口中的Tomcat Web服务器实例节点,然后select“属性”。在“属性”对话框中,“基本目录”属性指向base-dir目录。) tomcat-users.xml文件中的admin用户条目类似于以下内容: <user username="idea" password="woiehh" roles="manager"/>

angular色应该是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> 

还有一个很好的post, 为什么我得到部署错误?