Tomcat在Idea中。战争爆炸:服务器没有连接。部署不可用

时间:2013-11-23 15:07:00

标签: java tomcat intellij-idea

我正在尝试这个tutoial。我创建了新项目并运行它。 TomCat开始了,但后来什么也没发生。我可以在浏览器http://localhost:8080中手动打开并查看TomCat主页。这意味着可以启动服务器。但是我无法打开index.jsp。这是启动后的屏幕: screenshot 正如您所看到的,项目正在运行,但没有关于传递的环境变量的信息。 没有日志。

我使用TomCat 7.0.27

Idea 12.1.6

on Opensuse 12.2

我的tomcat HOME文件夹是/usr/share/tomcat

出现了问题: Idea无法将/ usr / share / tomcat / conf中的conf文件复制到/home/loco/.IntelliJIdea12/system/tomcat//conf。 我在chmod 777 *

中执行了/usr/share/tomcat and the problem gone.

我也改变了TomCat的启动方式。 它是默认值

/usr/share/tomcat/bin/catalina.sh run

我改为

/usr/share/tomcat/bin/catalina.sh start

所有其他步骤均按照教程完成。

13 个答案:

答案 0 :(得分:62)

当tomcat启动脚本集(最常见的是setenv.sh / setenv.bat)中的脚本覆盖JAVA_OPTS环境变量而不包含原始值时,会出现此问题。 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运行配置中。

答案 1 :(得分:28)

我通过删除$ CATALINA_HOME / bin中的setenv.bat来修复此问题。以下是里面的设置:

set JAVA_OPTS=-server -Xmx768m -XX:MaxPermSize=256M

我不再需要这些选项了,所以我刚刚删除了该文件。正如prule的回答所说,您可以将这些选项移动到Intellij Run配置中。删除文件后,部署在IntelliJ中运行良好。

编辑:有关其工作原理的更好答案,请查看codelark's answer below此外,使用他的方法,您可以保留setenv.sh/setenv.bat文件,如果你不能只从IntelliJ IDEA里面运行你的Tomcat。

答案 2 :(得分:5)

setenv.sh移除$CATALINA_HOME/bin也对我有用。 我正在运行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。

答案 3 :(得分:4)

file->project structure->Project SDK

然后重新配置SDK。

这真的解决了我的问题。

答案 4 :(得分:2)

我对这个理论了解不多,但我得到了同样的错误。等了一会儿后,我收到一条消息说:

工件部署期间出错。有关详细信息,请参阅服务器日志。

我发现了它可能意味着的日志文件:“Tomcat localhost.log”并且存在一个堆栈跟踪,其中包含“NoClassDefFoundError”和“ClassNotFoundException”。我刷新了Maven和一个“Rebuild项目”,这就是诀窍。

答案 5 :(得分:1)

(3.2)设置JRE_HOME或JAVA_HOME(必填)

这些变量用于指定Java Runtime Environment或用于启动Tomcat的Java Development Kit的位置。

JRE_HOME变量用于指定JRE的位置。 JAVA_HOME变量用于指定JDK的位置。

使用JAVA_HOME可以访问使用JRE_HOME时不允许的某些其他启动选项。

如果同时指定了JRE_HOME和JAVA_HOME,则使用JRE_HOME。

答案 6 :(得分:0)

当我在catalina.bat中设置了JAVA_OPTS时遇到了这个问题。删除这意味着tomcat按预期启动和部署。可以在Intellij Run配置中设置JAVA_OPTS值。

答案 7 :(得分:0)

我在Tomcat 7.0.27中遇到过这个问题。 我升级到Tomcat 8.0.21并修复了我的问题:)

答案 8 :(得分:0)

尝试将项目从eclipse导入IDEA时,我遇到了这个问题。

setter.sh中没有$CATALINA_HOME/bin。 IDEA中的Project StructureRun Configuration设置看起来没问题,整个项目在eclipse中正常工作,但在IDEA中显示此错误。

我的解决方法是,删除.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

答案 9 :(得分:0)

一种简单的方法是更改​​该文件中的端口号:

-Dcom.sun.management.jmxremote.port=1099

注意端口,默认为1099,但是当使用JMX时,它可能会被您或某人更改,因此,只需更改端口,即可,无需将其从tomcat bin文件夹中删除。

答案 10 :(得分:0)

另一个原因是,如果您的tomcat路径包含空白或'(',也会发生此错误。请重命名您的tomcat路径。

答案 11 :(得分:0)

如果您更改了/etc/hosts文件,则需要为其添加一行localhost YOU_USER_NAME

答案 12 :(得分:0)

转到TOMCAT BIN目录 在命令提示符处运行以下命令

cd Tomcat-9991 \ bin

catalina.bat运行

我得到的输出是

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/catalina/startup/Bootstrap : Unsupported major.minor version 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

表明我的tomcat和JDK之间存在JAVA版本问题,我也对此进行了设置。

我可以通过链接到正确的JDK版本来修复它。