2009-11-13 2 views
29

Io uso ant per creare file .jar in Eclipse. Funziona alla grande.eclissi: come eseguire il debug di un programma Java come file .jar?

Ho un file .jar su cui sto lavorando che si aspetta che il codice sia in un file .jar (cerca i file .properties nella stessa directory del file .jar) - lo standard Eclipse "Esegui" e i menu "Debug" eseguono il metodo main() di una specifica classe Java ... ma lo fanno dalla directory contenente i file di classe compilati, non da un file jar. C'è un modo per modificare questo comportamento in modo che Eclipse esegua invece il codice dal file .jar appropriato?

(mia soluzione in questo momento è quello di eseguire il file .jar esternamente, con esso sospesa in attesa di un debugger, per Dave Ray's answer to one of my other questions.)

risposta

29

Sì, è possibile creare un custom "Run Configuration":
Vale a dire, un "Java Application" uno, con:

  • Classpath scheda svuotata del suo contenuto predefinito (directory .class) e con il vaso aggiunte
  • Source scheda ingegno h il suo contenuto predefinito (dovrebbe fare riferimento alla directory src del progetto)

Una tale configurazione può essere eseguita o debug.

http://www.kermeta.org/docs/html.chunked/KerMeta-UI-UserGuide/KerMeta-UI-UserGuide_figures/KerMeta_RunCommandLine_classpath.png

(Esempio di una configurazione personalizzata con barattoli come voci utente)

+0

Questo non è applicabile a IntelliJ Idea, giusto? (richiede un modulo da specificare) –

+0

@den: non direttamente applicabile (non conosco abbastanza IntelliJ per pensare immediatamente a una procedura simile) – VonC

+1

_ @ VonC: nell'idea non è possibile eseguire un'applicazione che non è una delle tue moduli (progetti in eclissi "lingua", immagino). Sembra che una soluzione funzionante stia configurando un'esecuzione di un'applicazione remota. –

0

vorrei provare a rendere il codice più robusto, rendono Posizione file configurabile le proprietà, o semplicemente rendono caricarlo dal classpath. Quindi è possibile aggiungere direttamente il file delle proprietà al classpath eclipse. Problema Sovled!

+0

come questo immagino che http://www.javaworld.com/javaworld/javaqa/2003-08/01-qa-0808-property.html –

59

Si potrebbe utilizzare il debug remoto eseguendo il vaso come questo

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 -jar yourJar.jar 

E poi il collegamento dal vostro IDE a quella porta

+0

Questo ha funzionato per me; l'avvio dell'applicazione Java richiedeva una classe principale. – acostache

+6

In Eclipse si passa a "Debug Configurations ..." e si crea una nuova "Remote Java Application". – thomasa88

4

Ho appena trovato il seguente link, che descrive l'intera procedura al fine di eseguire il debug di un jar Java in remoto.

Debug Java applications remotely with Eclipse

Le parti principali sono:

VM di destinazione funge da server di eseguire il debug

java -Xdebug -Xrunjdwp: trasporti = dt_socket, server = y, indirizzo = "8000 "-jar test.jar

target VM agisce come client di debug

java -Xdebug -Xrunjdwp: trasporti = dt_socket, address = 127.0.0.1: 8000, sospendere = y prova -jar.jar

In base a come si esegue il target vm, client o server, è necessario configurare Eclipse in modo diverso.

configurazione Eclipse, se si avvia la VM di destinazione come client

enter image description here

configurazione Eclipse, se si avvia la VM di destinazione come server di

enter image description here

L'articolo fornisce anche una delicata introduzione all'argomento.