2014-05-02 19 views
16

Ho installato il plugin per il supporto Gradle in Netbeans e posso creare ed eseguire il progetto correttamente. Quando provo per l'esecuzione in modalità di debug, ottengo il seguente output:Impossibile eseguire l'attività di debug in NetBeans dopo il passaggio a Gradle

Executing: gradle debug 

:debug 
Cannot execute debug because the property "mainClass" is not defined or empty. 

BUILD SUCCESSFUL 

Total time: 0.222 secs 

sto usando:

Oracle Java 1.8 
Gradle 1.12 
Netbeans 8.0 
Gradle-Support 1.3.0 
LinuxMint 16 

Perché non è possibile eseguire il mio debugger?

+0

Non dovrebbe anche la mainClass mancante definire l'esecuzione del progetto? – Trilarion

risposta

18

aggiungere qualcosa di simile

if (!hasProperty('mainClass')) { 
    ext.mainClass = 'com.foo.acme.Main' 
} 

al vostro build.gradle. Dirà al plugin Gradle quale classe usare all'avvio dell'applicazione. Forse dovrebbe essere personalizzabile nell'interfaccia utente ma non riesco a vederlo ora.

+0

Sembra che abbia lanciato l'applicazione ma non si collega alle librerie native, il che causa un'eccezione. Devo impostare di nuovo java.library.path in modo esplicito? – ZeroDivide

+0

Suppongo. Assicurati che la directory di lavoro sia quella che ti aspetti o imposta 'java.library.path' o possibilmente' LD_LIBRARY_PATH' env var. Non ho provato le librerie native. – Radim

+0

Lo contrassegnerò come risposta, non ho la possibilità di controllare la roba del percorso lib adesso ma questo ha risolto il problema originale. – ZeroDivide

11

Un'altra soluzione a questo problema è creare una nuova attività di debug. Simile al run compito Gradle si può semplicemente aggiungere il seguente compito al file build.gradle:

task debug(dependsOn: classes, type: JavaExec) { 
    main = project.mainClassName 
    classpath = sourceSets.main.runtimeClasspath 
    standardInput = System.in 
    workingDir = project.assetsDir 
    ignoreExitValue = true 
    debug = true 
} 
+0

Questo ha risolto il problema per me. È una cosa strana Ho spostato il sottoprogetto di classe main() in un altro progetto root. Il comando 'run' funziona ancora.E 'debug' _stopped_ working. Dopo aver definito questo 'task debug() ...' è chiaro che il 'workingDir' non è stato impostato sul giusto percorso. Mentre l'attività 'run {}' imposta il corretto 'workingDir'. Fino ad ora, pensavo che il debug fosse un'esecuzione con un flag 'debug' impostato su' true'. Non così apparentemente. – will

5

Oltre a Radim's answer il modo per personalizzare il parametro mainClass nel Netbeans UI.

enter image description here

Nelle proprietà di un progetto Gradle Netbeans vai a "Built-In Attività/Debug", deselezionare la "Eredita" e aggiungere "-PmainClass = aaa.bbb.ccc" agli argomenti.

Immagino che questo dovrebbe essere fatto anche per l'attività di esecuzione.

È la stessa idea come eseguire/debug singolo file che già preleva il file selezionato come parametro mainClass.

0

ho avuto un similar problem ed era in grado di risolvere il problema impostando Opzioni/Varie/Gradle/Task esecutivo/task automatici a "NetBeans non dovrebbe aggiungere automaticamente le attività".