我已经配置ModiTectmodule-info.java为我的所有依赖项(没有它们)生成s,这似乎正在工作; 但是当涉及到拥有它们的依赖项时,却找不到它们.对于我自己的罐子,我是module-info.java手工编写的.
当我mvn package在我的应用程序中运行它失败时:
Error: Module tech.flexpoint.dashmancommon not found, required by tech.flexpoint.dashmanserver
Run Code Online (Sandbox Code Playgroud)
命令行如下所示:
C:\Program Files\Java\jdk-10.0.1\bin\jlink --add-modules tech.flexpoint.dashmanserver --module-path C:\Users\pupeno\Documents\Dashman\code\dashmanserver\target\modules;C:\Program Files\Java\jdk-10.0.1\jmods;C:\Users\pupeno\Documents\Dashman\code\dashmanserver\target\classes --output C:\Users\pupeno\Documents\Dashman\code\dashmanserver\target\jlink-image --launcher dashmanserver=tech.flexpoint.dashmanserver
Run Code Online (Sandbox Code Playgroud)
我知道这tech.flexpoint.dashmancommon是一个模块,module-info.java因为我自己建造了它.如何让ModiTect/jlink在原始罐子中找到所有相关模块?
我的构建中的 ModiTect配置如下所示:
<plugin>
<groupId>org.moditect</groupId>
<artifactId>moditect-maven-plugin</artifactId>
<version>1.0.0.Beta1</version>
<executions>
<execution>
<id>add-module-info-to-dependencies</id>
<phase>package</phase>
<goals>
<goal>add-module-info</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/modules</outputDirectory>
<overwriteExistingFiles>true</overwriteExistingFiles>
<modules>
<module>
<artifact>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
</artifact>
<moduleInfoSource>
module bcprov.jdk15on {
}
</moduleInfoSource>
</module> <!-- bcprov.jdk15on -->
<module>
<artifact>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</artifact>
<moduleInfoSource>
module com.fasterxml.jackson.core {
}
</moduleInfoSource> …Run Code Online (Sandbox Code Playgroud) 根据是否有一种方法在使用maven-jlink-plugin时添加maven依赖项? 有没有人在Java 11中使用带有JavaFX的ModiTect Maven插件.我尝试使用maven-jlink-plugin:
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jlink-plugin</artifactId>
<version>3.0.0-alpha-1</version>
<extensions>true</extensions>
<dependencies>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>6.2</version> <!-- Use newer version of ASM -->
</dependency>
</dependencies>
</plugin>
Run Code Online (Sandbox Code Playgroud)
但得到了:
--- maven-jlink-plugin:3.0.0-alpha-1:jlink (default-jlink) @ test33 ---
Toolchain in maven-jlink-plugin: jlink [ C:\Program Files\Java\jdk-11\bin\jlink.exe ]
The following dependencies will be linked into the runtime image:
-> module: javafx.controlsEmpty ( C:\Users\md\.m2\repository\org\openjfx\javafx-controls\11-ea+25\javafx-controls-11-ea+25.jar )
-> module: javafx.controls ( C:\Users\md\.m2\repository\org\openjfx\javafx-controls\11-ea+25\javafx-controls-11-ea+25-win.jar )
-> module: javafx.graphicsEmpty ( C:\Users\md\.m2\repository\org\openjfx\javafx-graphics\11-ea+25\javafx-graphics-11-ea+25.jar )
-> module: javafx.graphics ( C:\Users\md\.m2\repository\org\openjfx\javafx-graphics\11-ea+25\javafx-graphics-11-ea+25-win.jar )
-> module: javafx.baseEmpty ( C:\Users\md\.m2\repository\org\openjfx\javafx-base\11-ea+25\javafx-base-11-ea+25.jar …Run Code Online (Sandbox Code Playgroud) 我创建了一个 JavaFX 应用程序。它在我的 Intellij IDE 中完美运行。现在我想分发应用程序 - 即我想获得一个用户可以下载的安装程序,然后它会为他们安装应用程序。
我在这里找到了一篇非常有趣的文章。这篇博客文章基本上描述了我想要实现的目标。但是有两个区别:
我正在使用 Maven 而不是 Gradle
我有使用自动模块的依赖项,例如 iText7 和 apache.commons.lang3
自动模块的使用使事情变得非常复杂。有一个名为 ModiTect(这里)的 GitHub 项目已经被编写来解决这些问题。我没有使用 ModiTect 的经验,甚至我的 Maven 知识也几乎不存在(意思是:我真的不知道我在 pom.xml 中做什么)。
我正在寻找的是关于如何将 ModiTect(以及如果需要的话 jpackage)集成到我的 pom.xml 以便为我的 JavaFX 应用程序获取安装程序的解释(逐步)数据库,虽然这应该不是问题)。
有人可以提供此解释或向我推荐教程吗?
我在这个问题的末尾提供了一个 MWE。MWE 是一个 TestApp。要说明问题,请运行应用程序并按“打印 PDF”按钮。在资源中创建 pdf --> pdf
执行 javafx:run 时 MWE 会编译运行 执行 javafx:jlink 时会出现与 automodules 使用相关的错误
我不知道如何解决这个问题。ModiTect 似乎是一个很有前途的插件。另一种可能的方法可以在此GitHub 存储库中找到。但正如我之前所说:我的 Maven 知识不足以真正掌握这里发生的事情。任何帮助对我来说意义重大!
MWE:
pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.company</groupId>
<artifactId>TestApp</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>15</maven.compiler.source>
<maven.compiler.target>15</maven.compiler.target>
</properties> …Run Code Online (Sandbox Code Playgroud) 我正在使用 JavaFX,并且有一些不是自动模块的依赖项。当尝试运行时,mvn clean javafx:jlink我收到以下错误:
Error: automatic module cannot be used with jlink: org.apache.commons.io from [...]`
Run Code Online (Sandbox Code Playgroud)
这对于org.apache.commons.commons-lang3和也产生了错误commons-codec.commons-codec。我看到的错误是随机的。
所以我研究使用 jdeps 来生成依赖项的模块信息,例如
jdeps --generate-module-info tmp .../.m2/repository/commons-io/commons-io/2.12.0/commons-io-2.12.0.jar
Run Code Online (Sandbox Code Playgroud)
然后我使用 Moditect 将模块信息添加到现有的 jar 中:
Error: automatic module cannot be used with jlink: org.apache.commons.io from [...]`
Run Code Online (Sandbox Code Playgroud)
但我仍然遇到同样的错误。
我的模块信息:
jdeps --generate-module-info tmp .../.m2/repository/commons-io/commons-io/2.12.0/commons-io-2.12.0.jar
Run Code Online (Sandbox Code Playgroud)
我的完整 pom.xml:
<plugin>
<groupId>org.moditect</groupId>
<artifactId>moditect-maven-plugin</artifactId>
<version>1.0.0.Final</version>
<executions>
<execution>
<id>add-module-infos</id>
<phase>generate-resources</phase>
<goals>
<goal>add-module-info</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/modules</outputDirectory>
<modules>
<module>
<artifact>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.12.0</version>
</artifact>
<moduleInfoSource>
module org.apache.commons.io {
exports org.apache.commons.io;
exports …Run Code Online (Sandbox Code Playgroud) 我正在向 Spring Boot 添加模块定义,以便能够 jlink 我的项目。我遇到的错误之一是:
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: org.springframework.beans.factory.aspectj.AnnotationBeanConfigurerAspect not found.
Could not configure Spring Data JPA auditing-feature because spring-aspects.jar is not on the classpath!
If you want to use auditing please add spring-aspects.jar to the classpath.
at spring.data.jpa@2.0.8.RELEASE/org.springframework.data.jpa.repository.config.JpaAuditingRegistrar.registerBeanConfigurerAspectIfNecessary(JpaAuditingRegistrar.java:124)
Run Code Online (Sandbox Code Playgroud)
引发此异常的代码如下所示:
if (!ClassUtils.isPresent(BEAN_CONFIGURER_ASPECT_CLASS_NAME, getClass().getClassLoader())) {
throw new BeanDefinitionStoreException(BEAN_CONFIGURER_ASPECT_CLASS_NAME + " not found. \n"
+ "Could not configure Spring Data JPA auditing-feature because"
+ " spring-aspects.jar is not on the classpath!\n"
+ "If you want to use auditing please …Run Code Online (Sandbox Code Playgroud) jlink ×5
moditect ×5
java ×3
maven ×3
javafx ×2
deployment ×1
java-11 ×1
java-module ×1
jpackage ×1
spring ×1