2014-05-03 6 views
5

Ho un progetto che richiede l'esecuzione di librerie native. Sto usando il plugin Netbeans per il supporto Gradle.Come si esegue il debug di un progetto Gradle con dipendenze native in Netbeans?

apply plugin: "java" 
apply plugin: "application" 
apply plugin: "eclipse" 

sourceCompatibility = 1.7 

mainClassName = "com.myPackage.MainClass" 

if (!project.hasProperty('mainClass')) { 
    ext.mainClass = mainClassName 
} 

repositories { 
    mavenCentral() 

    maven { 
     url "http://teleal.org/m2" 
    } 
} 

dependencies { 
    compile group: "com.esotericsoftware.kryo", name: "kryo", version: "2.23.0" 
    compile group: "net.java.jinput", name: "jinput", version: "2.0.5" 
    compile group: "org.jcraft", name: "jorbis", version: "0.0.17" 
    compile group: "org.jdom", name: "jdom2", version: "2.0.5" 
    compile group: "org.lwjgl.lwjgl", name: "lwjgl", version: "2.9.0" 
    compile group: "org.lwjgl.lwjgl", name: "lwjgl_util", version: "2.9.0" 
    compile group: "org.teleal.cling", name: "cling-core", version: "1.0.5" 
    compile group: "org.teleal.cling", name: "cling-support", version: "1.0.5" 
    compile group: "xpp3", name: "xpp3", version: "1.1.4c" 

    compile files("./lib/jars/kryonet-2.21.jar") 
    compile files("./lib/jars/slick.jar") 
    compile files("./lib/jars/slick-util.jar") 
    compile files("./lib/jars/TWL.jar") 
} 

jar { 
    from { 
     configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } 
     configurations.runtime.collect { it.isDirectory() ? it : zipTree(it) } 
    } 

    manifest { 
     attributes "Main-Class": project.mainClassName 
    } 
} 

run { 
    configureRun(it) 
} 

task(debug, dependsOn: 'classes', type: JavaExec) { 
    configureRun(it) 
    classpath = sourceSets.main.runtimeClasspath 
} 

void configureRun (def task){ 
    main = mainClass 
    task.systemProperty "java.library.path", "./lib/native/" 
} 

L'applicazione lancerà bene in modalità di esecuzione, ma la modalità di debug produce il seguente errore:

FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':debug'. 
> No main class specified 

risposta

1

presumo, si sta utilizzando il plugin di applicazione ed è per questo questa configurazione per l'attività di esecuzione è abbastanza. Questo è, molto probabilmente si dovrebbe avere qualcosa di simile:

if (!project.hasProperty('mainClass')) { 
    ext.mainClass = mainClassName 
} 

run { 
    configureRun(it) 
} 

task(debug, dependsOn: 'classes', type: JavaExec) { 
    configureRun(it) 
    classpath = sourceSets.main.runtimeClasspath 
} 

void configureRun(def task) { 
    main = mainClass 
    task.systemProperty "java.library.path", "./lib/native/" 
} 
+0

Questo genera il seguente errore: "Esecuzione non riuscita per l'attività": debug ". > Nessuna classe principale specificata ' – ZeroDivide

+0

Ho aggiornato la mia domanda con il mio build.gradle completo. – ZeroDivide

+0

anziché main = mainClass, non dovrebbe essere task.main = mainClass? In un caso simile, tuttavia, questo non risolve il mio problema. Curioso se risolve il tuo. – vextorspace

0

compito (debug, DependsOn: 'classi', tipo: JavaExec) {

Sembra che si sta aggiungendo un'azione invece di configurare il l'attività, tutta la tua configurazione sull'attività avviene troppo tardi, cioè al momento dell'esecuzione.

Uno che o assicurarsi che il proprio principale (è necessario disporre di una qualche parte, giusto io sono nuovo a questo?) Si presenta come:

Main (string [] args) public static void throws Exception

La mia ricerca mi ha portato a questo: (questo sito potrebbe aiutarti con gradle) http://forums.gradle.org/gradle/topics/problem_with_javaexec