2017-01-10 4 views
0

Ich habe ein Java-Projekt, das ich versuche zu bauen, ich habe vor kurzem umgestellt, um in der Lage, die Abhängigkeiten schneller und einfacher zu verwalten.Gradle Build nicht alle "privaten" Bibliotheken hinzufügen

Ich versuche gradle build zu verwenden, mit diesem Ergebnis:

C:\whatever\>gradle build 

:compileJava 
:processResources UP-TO-DATE 
:classes 
:jar 
:startScripts 
:distTar 
:distZip 
:assemble 
:compileTestJava UP-TO-DATE 
:processTestResources UP-TO-DATE 
:testClasses UP-TO-DATE 
:test UP-TO-DATE 
:check UP-TO-DATE 
:build 

BUILD SUCCESSFUL 

Total time: 1.75 secs 

Die Bibliothek, die mir Probleme geben wird, die ich habe lokal wie folgt hinzugefügt:

repositories { 
    flatDir { 
     dirs 'libraries' 
    } 
} 


dependencies { 
    compile name: 'jfxwrapper' 
} 

Dies ist nicht der nur eine Bibliothek, die ich dem Projekt hinzufüge, aber es ist die einzige, die ich selbst gebaut habe.

Wenn ich ausführen gradle build (oder gradlew build, so scheint es genau das gleiche zu arbeiten), es gibt mir eine .jar in build/libs/*.jar, und dann versuche ich auszuführen diese .jar es diese Ausnahme auslöst:

verursacht durch: java.lang.ClassNotFoundException: jfxwrapper.JFXWrapperScene

JFXWrapperScene ist eine Klasse innerhalb jfxwrapper.jar. Ich habe diese Bibliothek verwendet, bevor ich sie zum Eclipse-Projektpfad hinzugefügt habe, und es funktioniert einwandfrei, aber aus irgendeinem Grund scheint Gradle nicht in der Lage zu sein, es zu finden.

Eine Erklärung? Irgendeine Idee warum dies passiert und wie man es beheben kann?

Vielen Dank für Ihre Geduld.

Update: Ich fand heraus, das Problem war, dass ich nicht die Bibliotheken in das .jar-Zugabe wurde, fügt dieses Stück Code alle referenzierten Bibliotheken auf die .jar:

task fatJar(type: Jar) { 
    manifest { 
     attributes 'Implementation-Title': 'MyTitle', 
     'Implementation-Version': '1.1.1', 
     'Main-Class': 'Main' 
    } 
    baseName = project.name + '-all' 
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } 
    with jar 
} 

Dies fügt alle Abhängigkeiten gradle fatJar verwenden, aber das Projekt immer noch nicht funktioniert, heißt es jetzt:

Ausnahme in Verfahren Anwendung Start

Ich weiß, ich habe keine Ausnahme in der Startmethode, weil ich den gleichen Code ausführen kann, wenn ich es mit Eclipse exportieren.

Irgendwelche Vorschläge? Ich fange an zu glauben, dass es ein großer Fehler war, auf Gradle zu wechseln, ich müsste vielleicht weiter mit Eclipse exportieren, es ist nicht so cool oder schnell, aber es funktioniert.

Antwort

0

Ich habe gerade die Lösung:

Wenn ein JavaFX-basiertes Programm kompiliert, müssen Sie angeben, wo die Ressourcen sind (* .css, * .fxml, Bilder ....), in meinem Fall dieses Stück Code bearbeitet:

sourceSets.main.resources.srcDir 'pathToDirectory' 
//For exmaple, in my case: 'src/main/java'