Dependencies 添加第三方库时Java 9(JLink)失败

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

编辑:您可以直接访问帖子末尾的2018-02-13更新以获取更新信息

我可以提供完整的源代码,因为这个问题已经出现在我的开源项目JMarkPad中

基本上:

  • 建筑总是能工作的,我得到一个可以工作的.jar,没有任何问题
  • 在没有第三方软件(在本例中为JFoenix)的情况下创建本机dist(运行
    gradle link
    )也可以工作
  • 使用第三方软件(在本例中为JFoenix)创建本机dist(运行
    gradle link
    )会引发以下问题:
:linkAll

:JMarkPad:app:clean

:JMarkPad:app:compileJava

:JMarkPad:app:processResources

:JMarkPad:app:classes

:JMarkPad:app:jar

:JMarkPad:app:link

错误:找不到模块应用程序

:JMarkPad:app:链接失败

:linkAll失败

有这方面的经验吗?请随意浏览整个项目,并提出任何有关它的问题,我真的需要这方面的帮助,我会很乐意帮助任何人试图帮助我

谢谢你的耐心

编辑:

jlink命令可在app/gradle.build文件中找到:

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链接它。参考文献-