2014-05-02 8 views
16

Ich habe das Gradle-Support-Plugin in Netbeans installiert und ich kann das Projekt problemlos erstellen und ausführen. Wenn ich versuche, in den Debug-Modus laufen zu lassen, erhalte ich die folgende Ausgabe:Kann Debug-Task in NetBeans nicht ausführen, nachdem ich zu Gradle gewechselt habe

Executing: gradle debug 

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

BUILD SUCCESSFUL 

Total time: 0.222 secs 

Ich verwende:

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

Warum kann ich meine Debugger laufen?

+0

Sollte die fehlende definierte mainClass auch den Projektlauf verhindern? – Trilarion

Antwort

18

hinzufügen so etwas wie

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

zu Ihrem build.gradle. Es teilt dem Gradle-Plugin mit, welche Klasse beim Starten der Anwendung zu verwenden ist. Vielleicht sollte das in der Benutzeroberfläche anpassbar sein, aber ich kann es jetzt nicht sehen.

+0

Dies scheint die Anwendung gestartet zu haben, aber nicht mit nativen Bibliotheken zu verknüpfen, was eine Ausnahme verursacht. Muss ich den java.library.path erneut explizit festlegen? – ZeroDivide

+0

Ich nehme an. Stellen Sie entweder sicher, dass das Arbeitsverzeichnis dem entspricht, was Sie erwarten, oder legen Sie 'java.library.path' oder möglicherweise' LD_LIBRARY_PATH' fest. Env var. Ich habe es nicht native Bibliotheken ausprobiert. – Radim

+0

Ich werde dies als die Antwort markieren, ich habe keine Chance, den lib-Pfad-Zeug jetzt zu überprüfen, aber das behob das ursprüngliche Problem. – ZeroDivide

11

Eine andere Lösung für dieses Problem besteht darin, eine neue Debug-Aufgabe zu erstellen. Ähnlich wie bei der gradle run Aufgabe können Sie einfach die folgende Aufgabe zu Ihrer build.gradle Datei hinzufügen:

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

Das behebt das Problem für mich. Es ist eine seltsame Sache. Ich habe das Unterprojekt main() Class in ein anderes Root-Projekt verschoben. Der 'run'-Befehl funktioniert immer noch.Und 'debug '_stopped_ funktioniert. Nach dem Definieren dieses 'task debug() ...' ist es klar, dass das Problem darin bestand, dass das 'workingDir' nicht auf den richtigen Pfad gesetzt wurde. Während der Task 'run {}' das korrekte 'workingDir' festlegt. Bis jetzt dachte ich, dass das Debugging ein Lauf mit einem 'debug' Flag ist, das auf' true' gesetzt ist. Nein, so offensichtlich. – will

5

Neben Radim's answer die Möglichkeit, die mainClass Parameter in der Netbeans UI anzupassen.

enter image description here

In den Eigenschaften eines Netbeans gradle Projekt gehen Sie zu "Built-In Tasks/Debug", das "Vererben" unclick und fügen Sie "-PmainClass = aaa.bbb.ccc" auf die Argumente.

Ich denke, das sollte auch für die Laufaufgabe getan werden.

Es ist die gleiche Idee wie run/debug einzelne Datei, die bereits die ausgewählte Datei als Parameter mainClass nehmen.

0

hatte ich ein similar problem und war in der Lage, es zu beheben Optionen/Sonstiges/Gradle/Taskausführung/Automatische Aufgaben „NetBeans sollten Aufgaben nicht automatisch hinzufügen“ zu setzen.