2017-01-10 4 views
0

У меня есть проект Java, который я пытаюсь создать, я недавно перешел в gradle, чтобы быстрее и проще управлять зависимостями.Gradle build не добавляя все «частные» библиотеки

Я пытаюсь использовать gradle build, с этим результатом:

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 

библиотека, которая дает мне проблемы, это один, что я локально добавил так:

repositories { 
    flatDir { 
     dirs 'libraries' 
    } 
} 


dependencies { 
    compile name: 'jfxwrapper' 
} 

Это не является только библиотека, которую я добавляю в проект, но это единственный, который я создал сам.

Когда я исполняю gradle build (или gradlew build, кажется, работает точно так же), это дает мне .jar в build/libs/*.jar, а затем я пытаюсь выполнить этот .jar он бросает это исключение:

Вызванный: java.lang.ClassNotFoundException: jfxwrapper.JFXWrapperScene

JFXWrapperScene класс внутри jfxwrapper.jar. Я использовал эту библиотеку, прежде чем добавлять ее в путь проекта eclipse, и она работает нормально, но по какой-то причине, похоже, град не может ее найти.

Любое объяснение? Любая идея, почему это происходит и как это исправить?

Благодарим за терпение.

Обновление: я узнал, что проблема заключалась в том, что я не добавлял библиотеки к .jar, этот кусок кода добавляет все ссылки библиотеки в .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 
} 

Это добавляет все зависимости с помощью gradle fatJar, но проект до сих пор не работает, теперь он говорит:

Исключение в методе запуска приложения

Я знаю, что у меня нет исключения в методе start, потому что я могу запустить тот же код, если я его экспортирую с помощью Eclipse.

Любые предложения? Я начинаю полагать, что переход на градлу был большой ошибкой, мне, возможно, придется продолжать экспорт с помощью Eclipse, это не так круто или быстро, но это работает.

ответ

0

Я просто нашел решение:

При составлении программы на основе JavaFX, необходимо указать, где ресурсы (* .css, * .fxml, изображения ....), в моем случае это кусок отработанного кода:

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