问题标签 [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.
java - ModiTect 和 Jlink 找不到模块依赖项
我已经将ModiTectmodule-info.java
配置为为我的所有依赖项(没有它们)生成s 并且这似乎有效;但是当涉及到确实拥有它们的依赖项时,它并没有找到它们。对于我自己的罐子,我正在手写module-info.java
。
当我mvn package
在我的应用程序中运行时,它失败了:
命令行如下所示:
我知道tech.flexpoint.dashmancommon
是一个模块并且有一个module-info.java
,因为我自己构建了它。如何让 ModiTect/jlink 在其原始 jar 中找到所有依赖模块?
我正在建设的ModiTect 配置如下所示:
如果我添加
到我的 ModiTect 配置,它开始工作,生成这个命令行:
我想这证实了该模块的工作原理并已安装。我只是不确定如何让 ModiTect 找到它(没有可怕的硬编码路径)。
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-签名信息
我收到此错误:
这就是我得到的几乎所有信息。模块有什么问题?有任何想法吗?
完整的堆栈跟踪看起来像这样,但我认为它没有帮助:
java - 使用 Java 模块和 jlink 时在 Spring 中找不到类
我正在向 Spring Boot 添加模块定义,以便能够 jlink 我的项目。我遇到的错误之一是:
抛出此异常的代码如下所示:
它在这里:
的定义在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
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 文件中?
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
这是在不打开所有安装包的情况下做我想做的事情的一种方式吗?它似乎与新的模块安全系统相矛盾。
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
是我的应用程序:
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 的摘录。这可以解决吗?
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 的配置,但我不确定如何。
java - 如何将 java 图像与 jpackage 捆绑并修改为 .app 文件?
我刚刚创建了一个 java 应用程序并使用 moditect-jlink 创建了一个图像,包括 JRE。但现在我想知道如何将它捆绑到 OSX 的 .app 文件中。有人试过吗?jpackage 似乎在不断变化,教程很快就过时了。