У меня проблемы с созданием модульного изображения с помощью плагина jlink gradle. В моем проекте используются Xstream и JavaFX под управлением jdk15. Поскольку создание файла .jar, содержащего зависимость javaFX, оказалось проблематичным, я попытался использовать вместо этого jlink, как предлагается здесь (1 ). Когда я попытался запустить задачу 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 или любой другой зависимостью? И что можно сделать, чтобы решить эту проблему?