在想法的雄猫。 战争爆炸:服务器没有连接。 部署不可用
我正在尝试这个tutoial 。 我创build了新的项目并运行它。 TomCat开始了,但是什么也没有发生。 我可以在浏览器http://localhost:8080
手动打开并查看TomCat主页。 这意味着服务器可以启动。 但是我无法打开index.jsp。 这是我的屏幕开始后: 截图正如你可以看到项目正在运行,但没有关于传递的环境variables的信息。 没有日志。
我使用TomCat 7.0.27
想法12.1.6
关于Opensuse 12.2
我的tomcat HOME文件夹是/usr/share/tomcat
有一个问题:Idea不能将conf文件从/ usr / share / tomcat / conf复制到/home/loco/.IntelliJIdea12/system/tomcat//conf。 我在/usr/share/tomcat and the problem gone.
执行了chmod 777 *
, /usr/share/tomcat and the problem gone.
我也改变了TomCat的开始方式。 这是默认值
/usr/share/tomcat/bin/catalina.sh run
我改变了
/usr/share/tomcat/bin/catalina.sh start
所有其他步骤都是按照教程完成的。
当tomcat启动脚本(通常是setenv.sh
/ setenv.bat
)中的脚本覆盖JAVA_OPTS
环境variables而不包含原始值时,会发生此问题。 IDEA将JAVA_OPTS
设置为告诉tomcat在1099上监听状态和部署等事件的JMX请求。
setenv.sh
中将会中断的一行示例:
export JAVA_OPTS="-XX:MaxPermSize=512m -Xmx1024m"
正确的版本:
export JAVA_OPTS="$JAVA_OPTS -XX:MaxPermSize=512m -Xmx1024m"
windows setenv.bat
文件中的相同示例行:
set JAVA_OPTS=-XX:MaxPermSize=512m -Xmx1024m
并纠正:
set JAVA_OPTS=%JAVA_OPTS% -XX:MaxPermSize=512m -Xmx1024m
如果只从IDEA内部运行tomcat,则可以像其他人一样执行,并从setenv
脚本中删除该行,并将jvm选项放入IDEA运行configuration中。
我通过在$ CATALINA_HOME / bin中删除了我的setenv.bat来解决这个问题。 这里是里面的设置:
set JAVA_OPTS=-server -Xmx768m -XX:MaxPermSize=256M
我不再需要这些选项,所以我只是删除文件。 正如prule的回答所说,您可以将这些选项移动到Intellij Runconfiguration。 删除文件后,部署IntelliJ内工作得很好。
编辑:为了更好的回答这个问题的原因, 请看下面的codelark答案 。 另外,使用他的方法,你可以保留你的setenv.sh / setenv.bat文件,如果你不仅从IntelliJ IDEA中运行你的Tomcat,这是非常有用的。
从$CATALINA_HOME/bin
删除setenv.sh
也为我工作。 我正在运行tomcat7 / Ubuntu / IntelliJ 12
使用bin文件夹中的setenv.sh
,在IJ启动时我在日志中看到:
/usr/local/tomcat/apache-tomcat-7.0.52/bin/catalina.sh run [2014-07-28 02:41:39,274] Artifact TomcatDebug:war exploded: Server is not connected. Press 'Deploy' to start deployment. Jul 28, 2014 2:41:40 PM org.apache.catalina.core.AprLifecycleListener init odonovanj@ubuntuj:/usr/local/tomcat/apache-tomcat-7.0.52$ sudo netstat -tulpn|grep 2928 tcp6 0 0 :::8080 :::* LISTEN 2928/java tcp6 0 0 127.0.0.1:8005 :::* LISTEN 2928/java tcp6 0 0 :::8009 :::* LISTEN 2928/java
删除后,在日志中我看到:信息:服务器启动在76毫秒连接到服务器[2014-07-28 02:44:35,847]工件TomcatDebug:战争爆炸:工件正在部署,请稍候… [2014- 07-28 02:44:36,512]神器TomcatDebug:战争爆炸:神器部署成功
odonovanj@ubuntuj:/usr/local/tomcat/apache-tomcat-7.0.52$ sudo netstat -tulpn|grep 2346 tcp6 0 0 :::8080 :::* LISTEN 2346/java tcp6 0 0 :::50044 :::* LISTEN 2346/java tcp6 0 0 127.0.0.1:8005 :::* LISTEN 2346/java tcp6 0 0 :::8009 :::* LISTEN 2346/java tcp6 0 0 :::1099 :::* LISTEN 2346/java tcp6 0 0 :::52268 :::* LISTEN 2346/java
好像setenv.sh
重写了$JAVA_OPTS
,干扰了在端口1099上运行的JNDI。
我不太了解这个理论,但是我得到了同样的错误。 等了一会儿,我收到一条消息:
工件部署期间出错。 详情请参阅服务器日志。
我发现它的日志文件大概意思是:“Tomcat localhost.log”,并有一个“NoClassDefFoundError”和“ClassNotFoundException”的堆栈跟踪。 我做了一个Maven刷新和一个“重build项目”,这就是诀窍。
file->project structure->Project SDK
然后重新configurationSDK。
这真的解决了我的问题。
(3.2)设置JRE_HOME或JAVA_HOME(必需)
这些variables用于指定Java运行时环境或用于启动Tomcat的Java Development Kit的位置。
JRE_HOMEvariables用于指定JRE的位置。 JAVA_HOMEvariables用于指定JDK的位置。
使用JAVA_HOME可以访问使用JRE_HOME时不允许的某些附加启动选项。
如果同时指定了JRE_HOME和JAVA_HOME,则使用JRE_HOME。
当我在catalina.bat中设置了JAVA_OPTS时,我遇到了这个问题。 删除这意味着tomcat按预期启动和部署。 JAVA_OPTS值可以在Intellij Runconfiguration中设置。
我有Tomcat 7.0.27的这个问题。 我升级到Tomcat 8.0.21,它解决了我的问题:)
尝试从Eclipse导入项目到IDEA时遇到此问题。
$CATALINA_HOME/bin
没有setter.sh
。 IDEA中的Project Structure
和Run Configuration
设置看起来不错,整个项目在eclipse中正常工作,但是在IDEA中显示这个错误。
我的解决scheme是,删除.idea
文件夹,重新导入整个项目。 我不知道这个问题的准确原因是什么,但对我来说是有用的。
现在日志看起来像这样:
/Library/Tomcat/bin/catalina.sh run [2015-09-22 12:40:57,906] Artifact bookstore:war exploded: Server is not connected. Deploy is not available. XXXXXX Connected to server [2015-09-22 12:40:58,848] Artifact bookstore:war exploded: Artifact is being deployed, please wait... XXXXXX [2015-09-22 12:41:07,862] Artifact bookstore:war exploded: Artifact is deployed successfully [2015-09-22 12:41:07,863] Artifact bookstore:war exploded: Deploy took 9,015 milliseconds
一个简单的方法是更改该文件中的端口号:
-Dcom.sun.management.jmxremote.port=1099
注意这个端口,默认是1099,但是当使用JMX的时候,它可能会被你或者某个人改变,所以,只需简单地改变一下端口,那就OK了,不需要把它从tomcat的bin文件夹中删除。
还有一个原因,如果你的tomcatpath包含空格或'(',这个错误也会发生,请重命名你的tomcatpath。
如果您更改了/etc/hosts
文件,则需要添加一行localhost YOU_USER_NAME
。