Idea 中的 Tomcat。战争爆发:服务器未连接。部署不可用

Posted

技术标签:

【中文标题】Idea 中的 Tomcat。战争爆发:服务器未连接。部署不可用【英文标题】:Tomcat in Idea. war exploded: Server is not connected. Deploy is not available 【发布时间】:2013-12-08 10:59:09 【问题描述】:

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

我使用的是 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 *

我还改变了 TomCat 的启动方式。 这是默认值

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

我改成

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

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

【问题讨论】:

我在 intellij idea 上也遇到了同样的问题,并且在更改为 tomcat_8.​​5(来自 tomcat_9)后得到了解决。还不知道原因 【参考方案1】:

当 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 运行配置中。

【讨论】:

这是正确答案;删除 bin/setenv.sh 只是删除了您自己的本地配置,并没有解释问题到底是什么。此答案解释了该解决方案的工作原理和方式,以及如果您正确制作 bin/setenv.sh 脚本,为什么没有必要这样做。 如何找到setenv脚本? 我用的是mac,我没有setenv.sh @codelark,我不明白你的最后一段。 remove the line from your setenv script and put the jvm options inside the IDEA run configuration. 我无法理解答案。我使用了export JAVA_OPTS="$JAVA_OPTS -XX:MaxPermSize=512m -Xmx1024m"set JAVA_OPTS=%JAVA_OPTS% -XX:MaxPermSize=512m -Xmx1024m。它不起作用。【参考方案2】:

我通过删除 $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。

【讨论】:

是的,这对我也有用。看起来任何 setenv.sh(或 setenv.bat)都会导致此问题发生。 如果您没有 setenv.sh,有时您可以在 $CATALINA_HOME/bin/catalina.sh 文件中找到 JAVA_OPTS。 太棒了!这就是问题所在。请将此标记为正确答案。 嗨,我也遇到了同样的错误,但是我在 %CATALINA_HOME%\bin 中找不到 setenv.sh(或 setenv.bat),而 catalina.bat/.sh 没有包含这个命令。我只是在下面找到:set "JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%" @ChristopherSchultz 你是对的,Codelark 有一个更彻底的答案。当时我只是碰巧找到了一个快速修复,并没有试图找出我的修复工作的原因。我将编辑我的答案,建议用户在下面查看他的答案。【参考方案3】:

$CATALINA_HOME/bin 中删除setenv.sh 也对我有用。 我正在运行 tomcat7/Ubuntu/IntelliJ 12

setenv.sh 在 bin 文件夹中,在 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] Artifact TomcatDebug:war 爆炸:Artifact 正在部署中,请稍候... [2014-07-28 02:44:36,512] Artifact TomcatDebug:war 爆炸:Artifact 部署成功

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。

【讨论】:

【参考方案4】:
file->project structure->Project SDK

然后重新配置 SDK。

这确实解决了我的问题。

【讨论】:

这真的很有帮助。顺便说一句,我做了文件->项目结构->项目 SDK,然后选择了 JDK 而不是 intelij SDK【参考方案5】:

我不太了解这个理论,但我得到了同样的错误。稍等片刻后,我收到一条消息:

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

我发现它可能意味着的日志文件:“Tomcat localhost.log”,并且那里有一个“NoClassDefFoundError”和“ClassNotFoundException”的堆栈跟踪。我刷新了 Maven 和一个“重建项目”,然后就成功了。

【讨论】:

是的,用 Gradle 重建了一个项目,终于可以运行了,谢谢! 感谢您的简单回答。它适用于我的 Maven !我浪费了两个小时寻找环境变量值...【参考方案6】:

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

这些变量用于指定 Java 运行时环境或用于启动 Tomcat 的 Java 开发工具包的位置。

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

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

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

【讨论】:

【参考方案7】:

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

【讨论】:

【参考方案8】:

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

【讨论】:

【参考方案9】:

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

$CATALINA_HOME/bin 中没有 setter.sh。 IDEA中的Project StructureRun Configuration设置看起来OK,整个项目在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

【讨论】:

【参考方案10】:

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

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

注意端口,默认是1099,但是在使用JMX的时候,可能会被你或者别人改,所以只要改一下端口就可以了,不用从tomcat bin文件夹中删除。

【讨论】:

【参考方案11】:

还有一个原因,如果你的tomcat路径包含空白或者'(',也会出现这个错误。请重命名你的tomcat路径。

【讨论】:

【参考方案12】:

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

【讨论】:

【参考方案13】:

转到 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 来修复它。

【讨论】:

以上是关于Idea 中的 Tomcat。战争爆发:服务器未连接。部署不可用的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ IDEA:Maven,项目编译和部署

谨防第三次世界战争的爆发

如何使用 maven 中的 tomcat 插件部署多个战争?

Tomcat 未连接到 SQL Server Express

向tomcat部署战争

LifecycleException:无法在 Tomcat 中启动组件部署战争