During Java applet startup, what does “Running JVM

2019-07-11 04:00发布

问题:

I am trying to run remote debugging on a Java applet, but cannot get the applet to connect to the debugger (Eclipse) nor will it suspend. During startup, I get the following:

...
    Match: digesting vmargs: -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,address=8088,server=y,suspend=y
    Match: digested vmargs: [JVMParameters: isSecure: false, args: -Xdebug -Xrunjdwp:transport=dt_socket,address=8088,server=y,suspend=y -Djava.compiler=NONE]
    Match: JVM args after accumulation: [JVMParameters: isSecure: false, args: -Xdebug -Xrunjdwp:transport=dt_socket,address=8088,server=y,suspend=y -Djava.compiler=NONE]
    Match: digest LaunchDesc: null
    Match: digest properties: [-Dsun.java2d.noddraw=true]
    Match: JVM args: [JVMParameters: isSecure: false, args: -Xdebug -Xrunjdwp:transport=dt_socket,address=8088,server=y,suspend=y -Djava.compiler=NONE -Dsun.java2d.noddraw=true]
    Match: endTraversal ..
    Match: JVM args final: -Xmx1g -Xdebug -Xrunjdwp:transport=dt_socket,address=8088,server=y,suspend=y -Xms512m -Djava.compiler=NONE -Dsun.java2d.noddraw=true
    Match: Running JREInfo Version    match: 1.7.0.15 == 1.7.0.15
     Match: Running JVM args match the secure subset: have:<-Xmx1g -Xdebug -Xms512m -Dsun.java2d.noddraw=true>  satisfy want:<-Xmx1g -Xdebug -Xrunjdwp:transport=dt_socket,address=8088,server=y,suspend=y -Xms512m -Djava.compiler=NONE -Dsun.java2d.noddraw=true>
...

I am assuming that the last line is the reason why the applet is not debugging properly, but I can find no documentation on what this line means (or how to make my -Xrunjdwp command be "secure"). Does anyone know where to find documentation on this?

回答1:

The comment in the sources of the class that is responsible for the output indicate that -Xrunjdwp is not a problem:

// 2. Trusted command-line arguments. These come from
//    deployment.properties and are specified by the end user via the
//    Java Control Panel. It is important that such command-line
//    arguments do not affect the "secure" state of the target JVM.
//    For example, the user needs to be able to specify -Xdebug
//    -Xrunjdwp[...] via the Java Control Panel to enable debugging
//    of applets on the client machine without affecting the ability
//    of the target JVM to run unsigned applets. We consider trusted
//    command-line arguments in the satisfies() computation.

So although the sources should be a good 'documentation' for this, from a quick look, I don't see why this should not work.