Remote debugging java web start under JVM 1.8
Asked Answered
M

3

12

I have a Java Web Start application, which I used to start through a shortcut:

"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

But after installing JDK 1.8 it all stopped working, my javaws don't see any of additional X||D params. I tried this way:

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

But no use.

The only solution I found is to set params using Java control panel, adding them directly to JVM.

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

How can I set params for 1.8 good old way?

P.S. JDK 1.6 x32 still works well with shortcuts. x64 1.7 starts but references to 1.8 libs, so I think all JDK x64 are in collusion.

Massarelli answered 31/10, 2014 at 6:30 Comment(4)
I'm having a similar problem. So did you manage to get it to work via Control Panel? what exactly did you type as Runtime parameters in there?Fling
nm, I got it to work using the following jvm parameters in Control Panel: -Xdebug -agentlib:jdwp=transport=dt_socket,address=9999,server=y,suspend=yFling
True. I did the same.Massarelli
But I found another way. Installing 1.7 and setting shortcut compatibility to Windows XP SP3.Massarelli
M
5

After all it still works with

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

in bat file.

Massarelli answered 21/9, 2015 at 6:4 Comment(0)
B
8

Starting from the (approximately) version 1.7.0_022 java web start launcher significantly alters list of supplied JVM-arguments and properties by treating vast of them as unsecured.

You can set the JAVA_TOOL_OPTIONS environment variable with described above debug switches instead of java control panel parameters before running JNLP file. (See http://www.oracle.com/technetwork/java/javase/envvars-138887.html#gbmsy and http://docs.oracle.com/javase/8/docs/platform/jvmti/jvmti.html#tooloptions). This is the correction of the previous Ivan' answer.

For example, you can try the following batch-file which was tested for JDK 1.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

Additionally, I would like to notice that for remote debugging of Java WS-applications it is essential to run JDK's JRE but not public JRE, otherwise you can observe that JVM terminates before executing your main class.

Britska answered 22/10, 2015 at 12:28 Comment(0)
L
7

Blatantly stealing Saeid Nourian's comment-answer:

Add -Xdebug -agentlib:jdwp=transport=dt_socket,address=9999,server=y,suspend=y to the arguments in the Java Control Panel.

Leucippus answered 18/11, 2014 at 22:52 Comment(3)
Yes, it works, but it's kind of an ugly solution. If I need to debug two different applications at same time, I can't do it.Massarelli
Oh, I agree, it's quite ugly. (Though debugging two apps is possible, just even uglier - launch one, change the port # in the control panel, launch the other.)Leucippus
You need to review this answer. It has a small, hard to see error in it. It could mislead people.Rose
M
5

After all it still works with

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

in bat file.

Massarelli answered 21/9, 2015 at 6:4 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.