为什么在Intellij IDEA的调试模式下WildFly抛出异常,而运行模式却能正常工作?

3
我决定学习如何调试Java EE应用程序。我有一个简单的JSF / EJB / JPA应用程序,通过Intellij IDEA部署和运行。这意味着我有一个所谓的Run / Debug配置,其中我指定了要部署的artifact(一个war文件),应用程序服务器路径(使用wildfly-8.2.0.Final / bin / standalone.bat)以及在部署后在浏览器中打开的URL(它是一个Web应用程序)。工作得很好 - 没有问题。但是当我运行调试时,据我所知,它基本上使用相同的配置,但只添加了


JAVA_OPTS   -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:52764,suspend=y,server=n

我有问题要添加环境变量。

D:\Proc\wildfly-8.2.0.Final\bin\standalone.bat D:\Proc\JDK\jdk1.8.0_31\bin\java -classpath "D:\Proc\IntelliJ IDEA 14.1.3\lib\idea_rt.jar;D:\Proc\IntelliJ IDEA 14.1.3\lib\util.jar" -Dfile.encoding=windows-1251 com.intellij.rt.execution.CommandLineWrapper C:\Users\username\AppData\Local\Temp\classpath0.tmp com.intellij.javaee.oss.process.JavaeeProcess 53821 com.intellij.javaee.oss.jboss.agent.JBoss71Agent 检测到服务器管理端口:9990 [2015-05-30 04:35:06,499] Artifact portfolio:war exploded: 服务器未连接。部署不可用。检测到服务器http端口:8080 调用 "D:\Proc\wildfly-8.2.0.Final\bin\standalone.conf.bat" "JAVA_OPTS 已在环境中设置;使用以下值覆盖默认设置: -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:52764,suspend=y,server=n

" 将JAVA属性设置为"D:\Proc\JDK\jdk1.8.0_31\bin\java"

JBoss引导环境

JBOSS_HOME:"D:\Proc\wildfly-8.2.0.Final"

JAVA:"D:\Proc\JDK\jdk1.8.0_31\bin\java"

JAVA_OPTS:" -Dprogram.name=standalone.bat -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:52764,suspend=y,server=n "

===============================================================================

已连接到目标VM,地址:'127.0.0.1:52764',传输方式: 'socket'

之后,我猜部署阶段会因为异常而失败,并且调试器会按照其默认行为停在URLClassLoader中抛出异常的那一行上: enter image description here

enter image description here

怎么回事?为什么相同的配置表现不同?我需要一些起点...

谢谢。

1个回答

3
原因是Intellij Idea在调试模式下启动时会覆盖JAVA_OPTS环境变量。您可以在运行/调试配置对话框中验证此操作。选择您的配置,查看启动/连接选项卡。选择Debug,您可以看到下面的复选框“传递环境变量”已设置。
有一个JAVA_OPTS的条目。它很可能会覆盖standalone.conf(Windows下的standalone.conf.bat)中所做的所有设置。这些设置可能对操作很重要。特别是如果您自定义了某些设置,则可以在运行模式下看到它们,但在调试模式下无法看到。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接