问题描述
我在使用 jlink gradle 插件制作模块化图像时遇到问题。 我的项目使用运行 jdk15 的 Xstream 和 JavaFX。由于制作包含 javaFX 依赖项的 .jar 文件被证明是有问题的,因此我尝试按照此处的建议 (1) 使用 jlink。当我尝试运行“jlink”任务时,出现了类似的问题 (2)。即使在我改变之后 /METFA-INF/services/org.xmlpull.v1.XmlPullParserFactory 在 xpp3_min-1.1.4c.jar 中:
org.xmlpull.mxp1.MXParser
org.xmlpull.mxp1_serializer.MXSerializer
运行“jlink”任务时出现新问题:
\build\jlinkbase\tmpjars\shady.entertainment.merged.module\module-info.java:41: error: package org.xmlpull.mxp1_serializer does not exist
org.xmlpull.mxp1_serializer.MXSerializer;
最后一行在 module-info.java 中产生错误:
...
requires java.xml;
requires java.desktop;
requires jdk.unsupported;
provides org.xmlpull.v1.XmlPullParserFactory with org.xmlpull.mxp1.MXParser,org.xmlpull.mxp1_serializer.MXSerializer;
}
我的 gradle.build 看起来像这样:
plugins {
id 'java'
id 'application'
id 'org.javamodularity.moduleplugin' version '1.5.0'
id 'org.openjfx.javafxplugin' version '0.0.9'
id 'org.beryx.jlink' version '2.12.0'
}
group 'shady.entertainment'
version '1'
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
// jsoup HTML parser library @ https://jsoup.org/
implementation 'org.jsoup:jsoup:1.13.1'
implementation 'com.thoughtworks.xstream:xstream:1.4.15'
implementation 'org.jetbrains:annotations:20.1.0'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
}
test {
useJUnitPlatform()
}
jar {
manifest {
attributes 'Main-Class': 'com.fiszki.plastyka.MainClassWrapper'
}
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
}
jlink {
options = ['--strip-debug','--compress','2','--no-header-files','--no-man-pages']
launcher {
name = 'FiszkiPlastyka'
}
}
javafx {
version = "15.0.1"
modules = [ 'javafx.controls','javafx.fxml']
}
mainClassName = 'com.fiszki.plastyka.MainClassWrapper'
在这一点上,我觉得我已经在互联网上搜索了大部分可能是什么原因和可能的解决方案。 这是 XStream、xmlpull 或任何其他依赖项的问题吗?可以做些什么来解决这个问题?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)