问题标签 [moditect]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
125 浏览

java - Jlinking 时 Moditect 找不到当前模块

我正在使用ModiTect来 Jlink 我的 Java 应用程序。按照自述文件和两个示例undertowvert.x,我将其添加到我的pom.xml

我还使用 ModiTect 将module-info.javas 注入到没有它们的依赖项中,但我认为这与这个问题无关。当我运行mvn package它失败并出现以下错误:

那就是这个 pom.xml 的模块。为什么找不到它(当示例似乎表明它会自动找到时)?

添加模块路径使其可找到:

但我必须指向目录classes中的target子目录,因为如果我指向以便可以找到target该文件,我会收到此错误:jar

0 投票
1 回答
950 浏览

java - ModiTect 和 Jlink 找不到模块依赖项

我已经将ModiTectmodule-info.java配置为为我的所有依赖项(没有它们)生成s 并且这似乎有效;但是当涉及到确实拥有它们的依赖项时,它并没有找到它们。对于我自己的罐子,我正在手写module-info.java

当我mvn package在我的应用程序中运行时,它失败了:

命令行如下所示:

我知道tech.flexpoint.dashmancommon是一个模块并且有一个module-info.java,因为我自己构建了它。如何让 ModiTect/jlink 在其原始 jar 中找到所有依赖模块?

正在建设的ModiTect 配置如下所示:

如果我添加

到我的 ModiTect 配置,它开始工作,生成这个命令行:

我想这证实了该模块的工作原理并已安装。我只是不确定如何让 ModiTect 找到它(没有可怕的硬编码路径)。

0 投票
1 回答
548 浏览

java - spring.core 的这个模块定义有什么问题?

我正在尝试开始使用 Java 的新模块系统以及 jlink,为此我使用了 ModiTect Maven 插件。我正在module-info.java为尚未定义它们的每个依赖项创建文件,以便 jlink 可以正确完成它的工作。

我需要的模块之一是spring.core来自org.springframework:spring-core:5.0.7.RELEASE. 我创建了这样的module-info.java外观:

通过这个 ModiTect 配置:

但是当我运行 jlink 时,使用以下命令:

rver\target\classes --output C:\Users\pupeno\Documents\Dashman\code\dashmanserver\target\jlink-image --launcher dashmanserver=tech.flexpoint.dashmanserver/tech.flexpoint.dashmanserver.DashmanServerApplication --ignore-签名信息

我收到此错误:

这就是我得到的几乎所有信息。模块有什么问题?有任何想法吗?

完整的堆栈跟踪看起来像这样,但我认为它没有帮助:

0 投票
0 回答
1594 浏览

java - 使用 Java 模块和 jlink 时在 Spring 中找不到类

我正在向 Spring Boot 添加模块定义,以便能够 jlink 我的项目。我遇到的错误之一是:

抛出此异常的代码如下所示:

它在这里:

https://github.com/spring-projects/spring-data-jpa/blob/master/src/main/java/org/springframework/data/jpa/repository/config/JpaAuditingRegistrar.java#L123-L128

的定义在isPresent这里https://github.com/spring-projects/spring-framework/blob/master/spring-core/src/main/java/org/springframework/util/ClassUtils.java#L329

为什么找不到类?有什么方法可以调试它以查看它为什么失败?

我将spring.data.jpa模块定义为:

所以这是需要的spring.aspects,我以这种方式定义了一个(至少现在是这样):

我正在使用 ModiTect 添加模块定义,到目前为止一切似乎都在工作,但是对于这个特定的类,我不确定缺少什么。我完整的 ModiTect 配置如下所示:

我怀疑这可能是一个错误,所以我在这里报告了它:https ://jira.spring.io/browse/SPR-17018

0 投票
1 回答
5965 浏览

maven - 带有 moditect 和 Java 11 的 JavaFX Maven

根据是否有办法在使用 maven-jlink-plugin 时添加 maven 依赖项? 有没有人在 Java 11中将 ModiTect Maven 插件与 JavaFX 一起使用。我尝试将 maven-jlink-plugin 用于:

但得到:

通过阅读另一篇文章,我知道我必须生成模块信息,但希望有人已经在他们的 pom 中使用了 ModiTect Maven 插件,每次都会自动为他们完成。

我将在我的学生的所有程序中使用 JavaFX,并且不想让他们每次都为所有 JavaFX 模块手动执行。
已编辑
我尝试使用以下 pom


但我收到此错误:


有什么想法吗?还是我应该等到 Java11 完全发布并希望有人将模块信息添加到 JavaFX 文件中?

0 投票
0 回答
1390 浏览

spring - spring 与 jlink、moditect 和 java 11

感谢 pupeno 在 spring 和 moditect 上的先例工作,帮助我解决了我在这个主题上的大部分问题,但是我被他挡得更远了。

我的问题是非法访问异常

我的 poc 在github上可用

我曾经添加这段代码以使其与 intelliJ IDEA 一起使用:

但是知道 jlink 我不知道如何重现相同的曲目

这是我的完整堆栈跟踪:

我真的不知道我能做什么,因为我的模块安装是打开的并且需要(显然)需要的东西

我的 moditect 模块结构看起来像

我使用了 spring 5.1.3 和 spring data 2.1.3 和 hibernate 5.3.7

这是在不打开所有安装包的情况下做我想做的事情的一种方式吗?它似乎与新的模块安全系统相矛盾。

0 投票
0 回答
286 浏览

java - @ComponentScan 未检测到 jlink 的 Java 运行时映像中的 bean

我在 Java 11 上使用 JavaFX 来创建桌面应用程序。该应用程序被捆绑到一个自定义运行时映像中,其所有模块及其依赖项使用jlink. 对于依赖注入,应用程序依赖于 Spring 框架。

我知道 Spring 模块目前不包含 a module-info.class,而是作为“自动模块”发货。由于无法与自动模块捆绑,我使用 Moditect Maven 插件jlink手动添加到每个 Spring 依赖项 JAR。module-info.class以下是 的各个部分pom.xml

使用上述模块定义,jlink成功没有问题,我的应用程序被捆绑到包含所有依赖项的自定义运行时映像中。

但是,如果我使用捆绑的 JRE 运行应用程序,就会出现问题:

导致IllegalAccessException

根据这个线程,可以使用以下方法修复错误--add-reads

IllegalAccessException相反,抛出了一种不同的类型:

根据错误消息的建议,我随后添加了另一个--add-reads参数:

现在应用程序启动并读取它的AppConfig.class,它带有注释@ComponentScan

但是,Spring 不会检测到使用构造型 ( @Component, @Service) 注释的项目的单个类,如输出Main.java所示:

为什么会@ComponentScan错过所有带注释的课程?AppConfig.java位于我的应用程序的根包中,所有类都位于子包中,因此 Spring 应该能够根据给定的配置检测它们。

为了完整起见,这module-info.java是我的应用程序:

0 投票
1 回答
40 浏览

java - 通过 moditect maven 插件在 Java 13 模块中添加 ResourceBundle 服务提供者指令

我有一个 Java 项目,我正在从 Java 8 迁移到 Java 13。这个项目使用 ResourceBundles 来启用语言本地化。

在 Java 8 中,我为 ResourceBundle.getBundle(baseName, control) 提供了一个自定义 ResourceBundle.Control ,但这在 Java 9+ 中不再起作用。据我了解,我必须改为提供一个自定义的 ResourceBundleProvider 接口,我称之为 UiProvider,以及该接口的一个实现 UiProviderImpl,它必须用作服务。

为了生成模块描述符,我使用了 moditect maven 插件。但看起来我不能在任何地方添加提供指令,只能导出、打开和使用指令。还是我错过了什么?这是我尝试配置的 pom.xml 的摘录。这可以解决吗?

0 投票
1 回答
650 浏览

java - 如何配置 moditect-maven-plugin 以在我的模块化应用程序中使用自动值库?

我正在尝试构建一个模块化应用程序,并且我正在尝试使用 moditect-maven-plugin 来使用自动值库(它不是模块化的)。

根据此处的说明,我提出了以下 pom.xml:

重要的部分是 moditect-maven-plugin 配置。因为我需要com.google.auto.value.AutoValue注释,所以我导出了那个包,然后给模块一个相关的名称。

仅供参考,这是我在其中使用注释的类:

...这module-info.java是我的申请文件:

但是,当我运行时mvn clean install,我收到module not found错误:

看来 moditect-maven-plugin 正在根据我运行时输出的这些日志工作mvn clean install

对于它的价值,这里是这个自动值库的生成模块信息(来自上面记录的位置):

所以我需要一些帮助来弄清楚我做错了什么。我假设我只是搞砸了 moditect-maven-plugin 的配置,但我不确定如何。

0 投票
1 回答
479 浏览

java - 如何将 java 图像与 jpackage 捆绑并修改为 .app 文件?

我刚刚创建了一个 java 应用程序并使用 moditect-jlink 创建了一个图像,包括 JRE。但现在我想知道如何将它捆绑到 OSX 的 .app 文件中。有人试过吗?jpackage 似乎在不断变化,教程很快就过时了。