Java Gradle build未添加全部;“私人”;图书馆

Java Gradle build未添加全部;“私人”;图书馆,java,eclipse,gradle,dependencies,Java,Eclipse,Gradle,Dependencies,我有一个我正在尝试构建的Java项目,我最近搬到了gradle,以便能够更快更容易地管理依赖关系 我尝试使用gradle build,结果如下: C:\whatever\>gradle build :compileJava :processResources UP-TO-DATE :classes :jar :startScripts :distTar :distZip :assemble :compileTestJava UP-TO-DATE :processTestResources

我有一个我正在尝试构建的Java项目,我最近搬到了gradle,以便能够更快更容易地管理依赖关系

我尝试使用
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
,它的工作原理似乎完全相同),它在
build/libs/*.jar
中给了我一个.jar,然后我尝试执行这个.jar,它抛出了这个异常:

原因:java.lang.ClassNotFoundException:jfxwrapper.JFXWrapperScene

JFXWrapperScene是
jfxwrapper.jar
中的一个类。在将它添加到eclipse项目路径之前,我已经使用过这个库,它工作得很好,但出于某种原因,gradle似乎无法找到它

有什么解释吗?知道为什么会发生这种情况以及如何解决吗

谢谢你的耐心

更新:我发现问题在于我没有将库添加到.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导出它,我可以运行相同的代码


有什么建议吗?我开始相信切换到gradle是一个很大的错误,我可能需要继续使用Eclipse进行导出,它不是很酷或很快,但它可以工作。

我刚刚找到了解决方案:

编译基于JavaFX的程序时,需要指定资源的位置(*.css,*.fxml,images…),在我的例子中,这段代码起作用:

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

即使在为exmaple设置sourceset.main.resources.srcDir'pathToDirectory'//时,我也遇到了同样的问题,在我的例子中是:“src/main/java”