我决定学习如何调试Java EE应用程序。 我有一个简单的JSF / EJB / JPA应用程序,我通过Intellij IDEA部署和运行。这意味着我有一个所谓的运行/调试配置,我已经指定了一个要部署的工件(一个war文件)一个应用程序服务器路径(使用了wildfly-8.2.0.Final/bin/standalone.bat)一个url to部署后在浏览器中打开(它是一个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 \用户名\ AppData \本地的\ Temp \ classpath0.tmp com.intellij.javaee.oss.process.JavaeeProcess 53821 com.intellij.javaee.oss.jboss.agent.JBoss71Agent检测到服务器管理员 port:9990 [2015-05-30 04:35:06,499]神器组合:战争爆发: 服务器未连接。部署不可用。检测到服务器http 端口:8080呼叫 “D:\ Proc \ wildfly-8.2.0.Final \ bin \ standalone.conf.bat”“JAVA_OPTS 已经在环境中设定;使用值覆盖默认设置: -agentlib:JDWP =运输= dt_socket,地址127.0.0.1 =:52764,暂停= Y,服务器= N
“将JAVA属性设置为”D:\ Proc \ JDK \ jdk1.8.0_31 \ bin \ java“
JBoss Bootstrap环境
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 =运输= dt_socket,地址127.0.0.1 =:52764,暂停= Y,服务器=正 “
=============================================== ================================
连接到目标VM,地址:'127.0.0.1:52764',传输: '插座'
之后,我猜部署阶段失败并出现异常,并且默认行为假定的调试器在URLClassLoader中抛出异常的行停止:
发生了什么事?为什么相同的配置表现不同?我需要一些东西开始...
THX。
答案 0 :(得分:2)
原因是Intellij Idea在调试模式下启动时会覆盖JAVA_OPTS环境变量。您可以在运行/调试配置对话框中对此进行验证。选择您的配置,然后查看启动/连接选项卡。选择 Debug ,您可以在下面看到 Pass环境变量的复选标记已设置。
JAVA_OPTS有一个条目。它可能会覆盖standalone.conf中的所有设置(windows的standalone.conf.bat)。这些设置对于操作非常重要。特别是如果您在standalone.conf中自定义某些设置,您可以在运行模式下看到它们,但不能在调试模式下看到它们。