java - 设置用于小程序启动的默认 JVM 参数

标签 java debugging applet remote-debugging jnlp

我正在尝试远程调试 Java 小程序,但我似乎无法使 -agentlib:jdwp JVM 参数起作用。我已经尝试在 Java 控制面板中为使用的特定 JRE 指定它,并且我已经尝试通过用于启动小程序的 JNLP 文件来设置它。

为小程序启动设置 JVM 参数的正确方法是什么?特别是远程调试。

最佳答案

查看 similar SO question ,我找到了以下答案...

有时为了调试一些与安全相关的东西,浏览器插件环境与 appletviewer 差别太大。以下是在浏览器中有效调试小程序的方法:

1) 获取二进制文件的调试信息

从 JRE_HOME/lib 备份 .jar 文件

(下载并)安装与您的 JRE 版本相同的 JDK。

将.jar 文件从JDK_HOME/jre/lib 复制到JRE_HOME/lib

JDK 中的文件编译时包含调试信息(源代码行号信息、变量名等),而 JRE 文件没有这些信息。

否则,您将无法在调试器中有意义地单步执行核心类代码。

2) 启用 Java 插件调试

转到 Java 控制面板/Java/Java 运行时设置/查看/用户/运行时参数

并添加启用调试的选项。像这样:

-Djava.compiler=NONE -Xnoagent -Xdebug -Xrunjdwp:transport=dt_socket,address=2502,server=y,suspend=n

有趣的选项是端口(这里使用 2502,你几乎可以使用任何空闲端口,记下来以备后用)和挂起 - 如果你需要调试小程序启动、类加载等,将它设置为"is"。这样,当您访问一个小程序页面时,浏览器似乎会卡住,因为 JVM 会立即暂停等待调试器连接。

3) 使用您喜欢的 IDE 远程调试 Java 插件

例如,在 Eclipse 中,选择 Run/Debug Configurations .../Remote Java Application

单击“新建”按钮。

确保连接类型是“Socket Attach”,如果您的浏览器是本地的,请选择 localhost 作为主机,以及您之前选择的端口(示例中为 2502)。

您可能必须在 JDK 中的源选项卡上包含 src.zip 才能使 Java 核心类源可用。

保存配置,一旦您的浏览器运行插件(JVM 挂起或未挂起),运行远程调试器连接到插件 JVM,打开一个包含您的 applet 源的项目。

关于java - 设置用于小程序启动的默认 JVM 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15013378/

相关文章:

javascript - 如何在 Google Chrome 中启动 JavaScript 调试器?

java - 使用 Gradle 运行 java 小程序

Java 小程序 Jbutton 错误

java - AbstractResource.ResourceResponse 在写入 OutputStream 时会阻止用户界面

java - JComboBox如何显示项目的右端?

java - IntelliJ IDEA 在 Debug模式下不拦截 JLine 代码补全

java - 小程序能做什么和不能做什么

java - 添加 While 循环

java - Sonarqube 集成到 gitlab.com 上的私有(private)仓库

java - 如何将 Java 对象的当前值打印到控制台,而不是在 Eclipse 中调试时挂起线程?