Dependencies 添加第三方库时Java 9(JLink)失败
编辑:您可以直接访问帖子末尾的2018-02-13更新以获取更新信息 我可以提供完整的源代码,因为这个问题已经出现在我的开源项目JMarkPad中 基本上:Dependencies 添加第三方库时Java 9(JLink)失败,dependencies,java-9,jlink,jfoenix,Dependencies,Java 9,Jlink,Jfoenix,编辑:您可以直接访问帖子末尾的2018-02-13更新以获取更新信息 我可以提供完整的源代码,因为这个问题已经出现在我的开源项目JMarkPad中 基本上: 建筑总是能工作的,我得到一个可以工作的.jar,没有任何问题 在没有第三方软件(在本例中为JFoenix)的情况下创建本机dist(运行gradle link)也可以工作 使用第三方软件(在本例中为JFoenix)创建本机dist(运行gradle link)会引发以下问题: :linkAll :JMarkPad:app:clean
- 建筑总是能工作的,我得到一个可以工作的.jar,没有任何问题
- 在没有第三方软件(在本例中为JFoenix)的情况下创建本机dist(运行
)也可以工作gradle link
- 使用第三方软件(在本例中为JFoenix)创建本机dist(运行
)会引发以下问题:gradle link
commandLine "${java_home}/bin/jlink", '--module-path', "libs${File.pathSeparatorChar}${java_home}/jmods",
'--add-modules', 'app', '--launcher', 'app=app/ui.UI', '--output', 'dist', '--strip-debug',
'--compress', '2', '--no-header-files', '--no-man-pages'
编辑2:完全错误:
9:28:38: Executing task 'link'...
:app:clean
:app:compileJava
:app:processResources
:app:classes
:app:jar
:app:link
Error: Module app not found
:app:link FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:link'.
> Process 'command 'C:\Program Files\Java\jdk-9.0.4/bin/jlink'' finished with non-zero exit value 1
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 1s
5 actionable tasks: 5 executed
Process 'command 'C:\Program Files\Java\jdk-9.0.4/bin/jlink'' finished with non-zero exit value 1
9:28:39: Task execution finished 'link'.
2018-02-13更新:
它当前使用一个名为JFoenix的库,如build.gradle文件中的依赖项声明所示:
该图书馆位于:
所以现在,当我尝试使用gradle run
运行软件时,使用gradle build
编译它,或者使用jlink进行分发,它总是说错误:找不到模块:com.jfoenix
我问过JFoenix mantainers,一对Java博客作者,他们有Java 9和JLink方面的经验,但还没有人能够解决这个问题
知道我做错了什么吗
非常感谢您的耐心。@?不确定,我发现的每个示例都使用该文件夹作为模块路径,所以我认为它是必须添加的默认文件夹。@nullpointer不,不是。应该吗?当我删除JFoenix时,它可以很好地使用这个确切的命令,所以不确定这是否是问题所在。我将尝试
libs${File.pathSeparatorChar}${java_home}/jmods;app/
(和变体)立即启动。我会确认它是否有效。@Tuzane进一步查看,似乎libs
是您正在构建app
模块的文件夹,您的命令可能就是libs;{java_home}/jmods
,如果分隔符对于您使用的操作系统是正确的,这看起来很好。还有一点观察:-文档中的示例似乎遵循JMODS的顺序
,那么您真的可以试试这个{java_home}/jmods${File.pathSeparatorChar}$libs
?(虽然不确定订单在那里是否重要)@nullpointer同样的错误。改变顺序没有帮助,顺便说一句。我刚刚意识到libs实际上是无用的,因为我自己没有任何libs文件夹,我唯一的依赖是JFoenix,我通过gradle依赖获得它,我实际上没有libs文件夹中的.jar。我可能应该为应用程序或类似的东西替换libs?对我来说是有意义的,我要尝试一下。libs
应该是您构建应用程序
的模块定义并将其附加到模块路径的目录。我仍然不明白的是,如何删除JFoenix组件,正如您所说,您能够成功创建app
模块,然后使用jlink链接它。参考文献-