当前位置: 首页 > 知识库问答 >
问题:

将jlink与自动模块一起使用

袁增
2023-03-14

我有一个明确的模块化项目,它依赖于一个自动模块;e、 g.关于java。激活。仍然可以使用jlink吗?

查看此模块信息。爪哇:

module hello {
    requires java.activation;
}

然后jlink不能添加模块:

$ jlink --module-path target/modules --add-modules hello --output target/jlink
Error: automatic module cannot be used with jlink: java.activation from file:///C:/Development/jlinkExample/target/modules/javax.activation-api-1.2.0.jar

根据我的理解,一个自动模块无论如何都会包含整个类路径。所以我想用jlink创建运行时映像没有任何好处?

另请参阅:什么是自动模块?

有没有可能绕过这个问题?也许为这些依赖生成module-info.java?

共有1个答案

子车俊材
2023-03-14

据我所知,一个自动模块无论如何都会包含整个类路径,所以我想用jlink创建一个运行时映像是没有好处的?

不,自动模块不会包含整个类路径。实际上,没有显式定义为模块(包含module-info.java)但在模块路径上找到的工件被视为自动模块,以弥合显式模块和类路径代码之间的差距。

有没有可能绕过这个问题,也许为这些依赖生成模块信息?

是的,您可以创建模块信息。javaJDEP一起使用,或者使用moditect之类的插件为模块生成模块信息,并将其注入现有的JAR中。

一旦工件(JAR)具有显式的模块声明,jlink应该接受它而不会失败。

 类似资料:
  • 我想在java模块中使用CDI功能。我希望我的代码保持泛型,不依赖于特定的实现。 我使用Java11和Maven3.6.0。 为了简单起见,我的目标被简化为在java文件中导入包。当我在没有module(没有)的情况下这样做时,每件事都能正常工作。 我的理解是,CDI库应该采用一个受jar文件名称启发的自动模块名称。当我使用指令运行maven时,我在类路径中看到。我相信,如果我错了,请更正,这应该

  • 问题内容: 我试图将Python 3程序反向移植到2.7,但遇到了一个奇怪的问题: 根据文档,返回Unicode文本的内存流。当我尝试手动输入Unicode字符串时,它可以正常工作。为什么即使所有写入的字符串都是Unicode字符串,它也无法与模块结合使用?在什么地方来,它使得异常? (我知道我可以代替使用,但是我想知道在这种情况下怎么了) 问题答案: Python 2.7模块不支持Unicode

  • 我一辈子都搞不清楚如何使用java模块将jackson包含在java项目中。 我尝试了使用的组合: 什么都不管用...误差范围包括: 和… 有没有人有一个示例pom.xml/module-info.java构建?还是指向一个的指针? 注意,这是我开始的地方: pom.xml: 以及在module-info.java中

  • 如何将自定义摄取管道与Filebeat模块一起使用?在我的例子中,我使用的是<code>apache<code>模块。 根据多个来源,这应该可以通过<code>output.elasticsearch进行配置。管道/。资料来源如下: https://www.elastic.co/guide/en/beats/filebeat/current/elasticsearch-output.html#pi

  • 问题内容: 我有两段代码用于学习Python 3.1中的多处理。我的目标是使用所有可用处理器中的100%。但是,此处的代码段在所有处理器上仅达到30%-50%。 无论如何,要“强制” python使用全部100%?操作系统(Windows 7、64位)是否限制了Python对处理器的访问?当下面的代码段运行时,我打开任务管理器并观察处理器的峰值,但从未达到并维持100%。除此之外,我还可以看到在此