eclipse: come eseguire il debug di un programma Java come file .jar?

Uso la ant per creare file .jar in Eclipse. Funziona alla grande.

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 “Run” e “Debug” i menu eseguono il metodo main() di una class Java specificata … ma lo fanno dalla directory contenente i file di class 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?

(In questo momento, la mia soluzione è di eseguire esternamente il file .jar, con la sospensione in attesa di un debugger, in base alla risposta di Dave Ray a una delle mie altre domande .)

Sì, puoi creare una ” Run Configuration ” personalizzata:
Cioè, uno ” Java Application “, con:

  • Scheda Classpath svuotata dal suo contenuto predefinito (la directory .class ) e con il jar aggiunto
  • Scheda Source con il suo contenuto predefinito (dovrebbe fare riferimento alla directory src del progetto)

Una tale configurazione può essere eseguita o debellata.

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

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

Potresti usare il debug remoto eseguendo il tuo jar in questo modo

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

E poi la connessione dal tuo IDE a quella porta

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

Esegui il debug delle applicazioni Java in remoto con Eclipse

Le parti principali sono:

La VM di destinazione funge da server di debug

java -Xdebug -Xrunjdwp: transport = dt_socket, server = y, address = “8000” -jar test.jar

La VM di destinazione funge da client di debug

java -Xdebug -Xrunjdwp: transport = dt_socket, indirizzo = 127.0.0.1: 8000, suspend = y -jar test.jar

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

Configurazione di Eclipse se si avvia il vm di destinazione come client

inserisci la descrizione dell'immagine qui

Configurazione di Eclipse se si avvia il vm di destinazione come server

inserisci la descrizione dell'immagine qui

L’articolo offre anche una delicata introduzione all’argomento.

Vorrei provare a rendere il codice più robusto, rendere configurabile la posizione del file delle proprietà o semplicemente caricarlo dal classpath. Quindi è ansible aggiungere direttamente il file delle proprietà al classpath eclipse. Problema Sovled!