当前位置: 首页 > 知识库问答 >
问题:

JVM 1.8下远程调试java web启动

许俊晤
2023-03-14

我有一个Java Web Start应用程序,我使用它通过一个快捷方式启动:

"C:\Program Files\Java\jdk1.7.0_67\bin\javaws.exe" -J-Dfile.encoding=UTF-8 -J-Xdebug -J-Xnoagent -J-Xrunjdwp:transport=dt_socket,server=n,suspend=y,address=8200" http://xxx/yyy/zzz.jnlp

但是在安装了JDK 1.8之后,它都停止了工作,我的javaws没有看到任何额外的X||D参数。我尝试过这种方式:

setenv JAVAWS_VM_ARGS "-Dfile.encoding=UTF-8 -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=n,suspend=y,address=8200"
"C:\Program Files\Java\jdk1.8.0_25\bin\javaws.exe" http://pont/dms/InstallDMS_debug.jnlp

但没用。

我找到的唯一解决方案是使用Java控制面板设置参数,将它们直接添加到JVM中。

Control Panel > Java > Java (tab) > View (button) > Runtime parameters (field)

我如何设置参数为1.8好的旧方式?

P.S.JDK 1.6 x32仍然可以很好地使用快捷方式。x64 1.7启动,但引用了1.8 libs,所以我认为所有JDK x64都是共谋的。

共有3个答案

叶茂才
2023-03-14

毕竟它仍然适用于

set JAVA_TOOLS=-agentlib:jdwp=transport=dt_socket,address=9999,server=y,suspend=y

在bat文件中。

史劲
2023-03-14

公然窃取Saeid Nourian的评论答案:

-Xdebug-agentlib:jdwp=transport=dt_socket,address=9999,server=y,suspend=y添加到Java控制面板中的参数中。

法烨华
2023-03-14

从(大约)1.7.0_022版开始,java web start launcher将大量提供的JVM参数和属性视为不安全的,从而显著改变了它们的列表。

在运行JNLP文件之前,可以使用上述调试开关而不是JAVA控制面板参数设置JAVA_TOOL_OPTIONS环境变量。(见http://www.oracle.com/technetwork/java/javase/envvars-138887.html#gbmsy和http://docs.oracle.com/javase/8/docs/platform/jvmti/jvmti.html#tooloptions).这是对伊万先前回答的更正。

例如,您可以尝试以下批处理文件,该文件已针对JDK1.8进行了测试。0_60:

setlocal

set JAVAWS_TRACE_NATIVE=1
set JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,address=8002,server=y,suspend=n %JAVA_TOOL_OPTIONS%

set JAVA_HOME_64=c:\Java\64\jdk1.8
set JAVA_HOME=%JAVA_HOME_64%
set JDK_JRE_HOME=%JAVA_HOME%\jre
set JRE_HOME=%JDK_JRE_HOME%

set ONLINE_JNLP_URL=http://pont/dms/InstallDMS_debug.jnlp

"%JRE_HOME%\bin\javaws" %ONLINE_JNLP_URL%

endlocal

此外,我想指出,对于Java WS应用程序的远程调试,必须运行JDK的JRE,而不是公共JRE,否则可以观察到JVM在执行主类之前终止。

 类似资料:
  • ThinkPHP5.0版本开始,提供了Socket日志驱动用于本地和远程调试。 Socket调试 只需要在配置文件中设置如下: return [ 'type' => 'socket', 'host' => 'slog.thinkphp.cn', //日志强制记录到配置的client_id 'force_cl

  • 问题内容: 我正在尝试在Windows主机上的PyCharm和运行django应用程序的debian虚拟主机之间进行调试。说明说要安装egg,添加导入,然后调用命令。我认为这些事情需要在debian主机上完成吗? 好吧,那我应该把这两行放在哪个文件中? 我尝试将其放入settings.py中,但是得到了这种东西… pycharm只是坐在那里“等待连接” 问题答案: PyCharm(或你的选择依据)

  • 前言 在通过串口调试嵌入式设备时,每次需要通过接线和 USB 转换器连接才能进行,对设备操作的话,存在一定的不便,并且会占用电脑的 USB 口,接线也会造成一定的不稳定,因此可以通过串口命令开启 telnet 或者 ssh 服务,远程登陆设备。通过系统命令、程序的输出以及 gdb 进行 远程调试,提高调试的便捷性。 调试案例 某路由器溢出漏洞调试 在 2.3.1 章节中对漏洞进行静态分析,现在来动

  • 使用Chrome开发人员工具调试原生Android应用中的WebView。 在Android 4.4(KitKat)或更高版本上,使用DevTools在原生Android应用中调试WebView内容。 TL;DR 在原生Android应用启用WebView调试;在Chrome DevTools中调试WebView。 通过chrome://inspect访问可调试的 WebView 列表。 WebV

  • 问题内容: 我有一个Java Web Start应用程序,该应用程序是通过快捷方式启动的: 但是在安装JDK 1.8之后,所有这些都停止了工作,我的javaws看不到任何其他X || D参数。我这样尝试: 但是没用。 我发现的唯一解决方案是使用Java控制面板设置参数,并将其直接添加到JVM。 如何为1.8好的旧方法设置参数? PS JDK 1.6 x32仍然可以很好地使用快捷方式。x64 1.7

  • 使用远程调试 为了与qemu配合进行源代码级别的调试,需要先让qemu进入等待gdb调试器的接入并且还不能让qemu中的CPU执行,因此启动qemu的时候,我们需要使用参数-S –s这两个参数来做到这一点。在使用了前面提到的参数启动qemu之后,qemu中的CPU并不会马上开始执行,这时我们启动gdb,然后在gdb命令行界面下,使用下面的命令连接到qemu: (gdb) target remot