Java 小程序不适用于小程序的远程调试

Posted

技术标签:

【中文标题】Java 小程序不适用于小程序的远程调试【英文标题】:Java applets doesnt not working with Remote debugging of applet 【发布时间】:2014-04-23 16:12:12 【问题描述】:

我尝试对 Java 小程序使用远程调试。 我正在使用 Java 7 update 51,当我尝试加载小程序时,它会显示在 Java 控制台中,然后被触发。

network: Connecting http://domain.com/useradmin3.gif with proxy=DIRECT
network: Connecting http://domain.com/ with proxy=DIRECT
preloader: Stop progressCheck thread

我在 Javacpl 中传递了以下作为运行时参数: "-Djava.compiler=NONE -Xnoagent -Xdebug -Xrunjdwp:transport=dt_socket,address=8007,server=y,suspend=n"

【问题讨论】:

看看这是否有帮助sharingtechexperiencies.blogspot.in/2013/05/… @TechSpellBound 我确实尝试了该链接中提到的所有问题。它并没有真正帮助。 【参考方案1】:

Biscuit 可能缺少一些编译器标志(如“行、变量、源”)以允许远程调试。

例如,您是否使用 Ant,您需要将此行添加到您的 javac:

<!-- Javac lines, vars, source compiler flags -->
<javac srcdir="..." destdir="..." classpathref="..." debug="true" debuglevel="lines,vars,source" />

然后在你的执行脚本中添加:

<!-- debug configurations: modify the port you want-->
<jvmarg value="-Xdebug"/>
<jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4060"/>

另一方面,如果您使用 Maven,可以在 中添加相同的标志,如下所示:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>2.0.2</version>
      <configuration>
        <!-- Necessary in order for the debug levels to be considered-->
        <debug>true</debug>
        <debugLevel>lines,vars,source</debugLevel>
      </configuration>
    </plugin>
  </plugins>
</build>

如果使用 Jetty,和以前一样...你需要有以下变量:

export MAVEN_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=n"

另一方面,您可以检查将 suspend flag 设置为“yes”,即“suspend=y”。除非您将调试器连接到您的端口,否则这不会启动您的应用程序。

这里可以查看jboss的具体信息:

http://webdev.apl.jhu.edu/~jcs/ejava-javaee/coursedocs/605-784-site/docs/content/html/devenv-jboss-setup.html#enable-jboss-debug

并始终检查停止防火墙。如果是 iptables,可以执行以下命令:

service iptables stop

哦,您可以尝试的另一件事是检查您的端口当前是否被另一个进程使用:

In windows:
netstat -nab

Linux:
netstat -nap

希望能提供帮助。

【讨论】:

感谢您的时间和精力。我确实尝试过使用suspend=y,我禁用了防火墙,还验证了端口是否正在使用中,但我没有帮助。我禁用了 jre 7u51 并安装了不推荐的 jre 6u29,但确实解决了我的问题。我现在可以进行调试,但我仍然不确定到底是什么问题。 这很有趣。您可以创建一个关于它的问题,只是为了知道为什么会这样。抱歉帮不了你。 感谢您的回复。我确实弄清楚了这个问题的原因。我有一个包含多个小程序的页面。我已经为远程调试设置了 Java 参数。每当我加载页面时,它都会为页面加载两个 JVM,我不知道为什么。因此,对于第一个 JVM,它使用端口号。提到听。但是对于第二个 JVM,相同的端口号。应该使用 Java 参数是全局定义的。所以第二个 JVM 在等待端口空闲时挂起。【参考方案2】:

我确实弄清楚了这个问题的原因。我有一个包含多个小程序的页面。我已经为远程调试设置了 Java 参数。每当我加载页面时,它都会为页面加载两个 JVM,我不知道为什么。因此,对于第一个 JVM,它使用端口号。提到听。但是对于第二个 JVM,相同的端口号。应该使用 Java 参数是全局定义的。所以第二个 JVM 在等待端口空闲时挂起。

我确实想出了解决此问题的方法,如果有人需要,请告诉我。

【讨论】:

以上是关于Java 小程序不适用于小程序的远程调试的主要内容,如果未能解决你的问题,请参考以下文章

Chrome 远程调试不适用于 IP

小程序开发工具支持真机调试上千违规“借贷”小程序被永久封禁iOS最新版微信中小程序出现眼中bug | 周报

资讯│小程序开发工具支持真机调试

spark远程debug之调试spark on yarn 程序

小程序有放大招小程序开发工具支持真机调试

如何使用 WebView 启用 WebKit 的 Android 应用程序的远程调试/检查器?