从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 start或startup.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}/conf
find的tomcat-users.xml
,
- 确保用户(如netbeans中所选)添加了
script-manager
angular色
例如,更改
<user password="tomcat" roles="manager,admin" username="tomcat"/>
至
<user password="tomcat" roles="manager-script,manager,admin" username="tomcat"/>
- 确保
manager-script
angular色被声明
加
<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, 为什么我得到部署错误?