我正在尝试这个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
所有其他步骤均按照教程完成。
答案 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 Structure
和Run 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版本来修复它。