Java Gradle build未添加全部;“私人”;图书馆
我有一个我正在尝试构建的Java项目,我最近搬到了gradle,以便能够更快更容易地管理依赖关系 我尝试使用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
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”