2009-11-03 4 views
8

Sto eseguendo il debug di un'applicazione jnlp e sono stato in grado di eseguire il debug remoto tramite eclissi, ma non più.debug remoto di un'applicazione jnlp con eclissi

il comando per avviarlo è:

/usr/java/jdk1.6.0_14/jre/bin/java -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=1445 -Djnlpx.heapsize=64m,512m -DtrustProxy=true -Xverify:remote -Djava.security.policy=/lib/security/javaws.policy -Dfile.encoding=UTF-8 -Xbootclasspath/a:/usr/java/jdk1.6.0_14/jre/lib/deploy.jar:/usr/java/jdk1.6.0_14/jre/lib/javaws.jar:/usr/java/jdk1.6.0_14/jre/lib/plugin.jar -classpath /usr/java/jdk1.6.0_14/jre/lib/deploy.jar com.sun.javaws.Main launch.jnlp 
Listening for transport dt_socket at address: 1445 

e il problema è che quando attacco il debugger Eclipse, si spegne e si riavvia; quindi il debugger si collega al primo processo; e quando questo muore, fa il debugger.

lo script del debugger in realtà non ha importanza; poiché il processo jnlp si riavvia da solo prima che il debugger venga mai avviato se suspend = n.

Ho provato a tracciarlo, ma l'opzione -XX: TraceSupport = true (e altre varianti che ho provato) causa un errore jvm.

Sto utilizzando fedora 11, IDE Java EE Eclipse per gli sviluppatori Web. (ID build: 20090621-0832)

Mi chiedo se qualcuno sa come risolvere questo problema, o almeno come attivare una registrazione migliore (ad esempio, acquisire tutti gli output della console in un log, in modo che io possa prendere uno sguardo alla prima console che lampeggia sul mio schermo per un millisecondo)

grazie!

risposta

4

My Boss ha trovato la risposta:

Sembra che i tag “<property>” nel file JNLP sono più restrittive con il più recente di JRE. Secondo il Sun documentation:

“Per un'applicazione non attendibile, sistema proprietà impostate nel file JNLP saranno essere impostate solo da Java Web Start se sono considerati sicuri, o se il nome proprietà inizia con "jnlp ". o "javaws.".”

Sembra che lo stato non attendibile causa l'applicazione per lanciare un seconda volta con le appropriate proprietà.

dopo aver ricompilato e la fissazione di un problema si spera non correlato in cui a capo causavano l'APPLICATION.JNLP firmato e il launch.jnlp di non apparire come "lo stesso", il debugger sta lavorando.

+1

Great! Il tuo commento mi ha aiutato a trovare il mio problema. Sembra che il JNLP sia scaricato o analizzato due volte, a seconda dello stato non attendibile. La seconda volta, i parametri utilizzati sono quelli impostati nel . Quindi avevo bisogno di aggiungere tutti i parametri della mia richiesta nell'HREF, e finalmente sta funzionando. Grazie. – Kloe2378231

4

Questo blog post contiene variabili di ambiente che è possibile impostare per eseguire il debug di jnlp. Questo ha sempre funzionato per me.

set JAVAWS_TRACE_NATIVE=1 

    set JAVAWS_VM_ARGS=-Xdebug -Xnoagent -Djava.compiler=NONE 
      -Xrunjdwp:transport=dt_socket,address=8989,server=y,suspend=y 
    javaws http://server:port/descriptor.jnlp 
+0

L'ho trovato e ho provato alcune delle bandiere; Continuerò ad andare e far conoscere ai pazienti i risultati; questa mattina ho trovato questo post (http://forums.sun.com/thread.jspa?threadID=569693) e continuerò a collegarlo. –

+0

Ho anche trovato questo post: http://stackoverflow.com/questions/686061/how-can-i-debug-applications-under-java-web-start-jnlp –