问题标签 [module-info]

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 回答
181 浏览

java - 在 module-info.java 中需要 akka

我需要什么才能module-info.java使用?我在.AkkaJDK 9maven

0 投票
2 回答
5369 浏览

java - 如何将模块声明注入 JAR?

假设我有一些lib.jar我没有源代码的库(或者它是用一些不知道模块的非 Java 语言编写的)。lib.jar没有module-info.class,我不想将它用作自动模块,所以我想注入module-info.class它。

我首先module-info.java使用以下命令生成:

假设这产生了类似的东西:

然后我尝试编译它,但javac由于包不存在package1而失败:package2

当然,我可以创建目录package1package2在其中包含虚拟类,但是有更好的方法吗?

0 投票
3 回答
101 浏览

java - 为什么未模块化的 JAR 可以访问封装的模块化 JAR 的非公开?

我在 intelliJ 中使用 Java 9:我创建了 4 个模块(所有模块都依赖于 module1):

  1. module1:导出包 pkg1 并将 pkg2 导出到模块 2。
  2. module2:需要 module1 并且能够访问这两个包
  3. module3:需要 module1 并且只能访问 pkg1
  4. module4:没有module-info.class,可以访问module1的两个包

我认为自动模块应该需要所有暴露的打包,而不是那些没有暴露的。

我不明白封装的意义是什么,如果它只适用于显式模块化的 JAR。

我错过了什么?

0 投票
2 回答
4044 浏览

java - 是否可以在不使用编译器标志的情况下在同一个项目中混合 Java 8 和 Java 9 源代码?

在 Java 9 中,您可以选择将源目录打包为模块,方法是添加一个 module-info.java,它定义了它导出的事物包,以及它依赖的其他模块。

但是,一旦这样做,您必须在模块描述符中列出所有依赖项 - 并且依赖项本身必须都是模块。因此,通过扩展,如果您模块化单个源目录,则必须模块化公司范围内的每个源目录。

此外,您不能在 Java 8 或更早版本中定义模块,这意味着除了模块化每个 Java 源目录之外,您还必须将所有内容都转换为 Java 9。同时。

如果您在一家拥有大量代码并由许多不同项目共享的公司工作,这似乎是灾难性的。

现在,我可以通过设置一堆编译器标志来避免定义模块来解决这个问题,但这似乎是一个非常糟糕的解决方案。

我希望我理解不正确?

0 投票
0 回答
308 浏览

java-9 - Java 9 - 如何使用模块信息重新编译 .jar 库

我读到将 .jar 库作为依赖项添加到 java9 模块中,我们只需要将它们包含在 --module-path 中,它们将被转换为“Atomatic Modules”

但是,当我尝试使用 jLink 时,仍然出现错误:错误:找不到 dd.plist 模块的 module-info.class

我意识到我们可以使用 jdeps 生成 module-info.java,我的问题是如何使用这个 module-info.java 重新编译 .jar 库?

0 投票
3 回答
4941 浏览

java-9 - module-info.java 不适用于 Java 9 中的 lombok

我在将我们的项目迁移到Java 9时遇到了问题。

更新 Java 9 后,我尝试运行项目,但遇到编译器错误:-

但我找到了解决方法。我添加了lombok.config文件。

然后将module-info.java文件添加到项目编译器后再次显示错误

项目示例:

我们有实体Store

在根的包中我有module-info.java内容:

在根的项目中,我有 lombok.config文件:

在我称之为代码的某处:

0 投票
1 回答
1019 浏览

eclipse - 创建 module-info.java 后无法使用未命名模块中的类

我正在尝试将旧的 java 项目迁移到 java 9,并且最好尝试新的 module-info.java 功能。该项目使用 maven 依赖项,据我所知,那些将 .jar 迁移为未命名的模块。项目本身在替换了一些折旧的库后运行良好,但是当我尝试添加 module-info.java 文件时出现问题。它不再能够与任何 Maven 导入交互。我对未命名模块的理解是错误的吗?我认为它们能够与同一个项目中的命名/自动模块共存。如果不是,为什么在创建 module-info.java 后我无法从我的 Maven 依赖项中导入类?

0 投票
1 回答
998 浏览

java - 如何让使用 Unsafe 的 java8 代码在 jdk8 和 jdk9 上工作?

sun.misc.Unsafe在我的 Java8 代码库中使用。这不适用于 Java9。

我想修复 Java9,但使用在 Java8 上运行的相同代码库。如果我放module-info.java,它将不起作用,因为我的代码库是 Java8。

该怎么办?

0 投票
2 回答
4256 浏览

java - module-info.java 'opens' 语句可以包含一个包和所有子包吗?

我有一个module-info.java看起来像的文件 -

我希望有可能允许 Spring 访问所有内部包,而无需将每个包显式添加到 module-info.java 中。

有没有办法有一个更通用的opens语句来允许我所有的内部包(和子包)都可以访问spring.beans

0 投票
1 回答
2194 浏览

java - JPMS/Jigsaw 模块中缺少主类

我正在尝试创建一个可以java -p <jar file> -m <module>在 Java 9.0.1 上运行的模块化可执行 jar 文件。

这在使用 创建 jar 时按预期工作,但在使用and生成时jar cfe test.jar test.Main -C classes/ .会抛出。module test does not have a MainClass attribute, use -m <module>/<main-class>mvn packagemvn assembly:single

这些 maven 生成的 jar 仍然可以java -p test.jar -m test/test.Main使用java -jar test.jar.


我检查了 jar 内容jar xf test.jar,发现 jar 完全一样,除了清单(见下文):

java -p test.jar -m test值得注意的是,在指定工作清单时仍然无法使用:

编辑:具有预期行为的回购: https ://github.com/deontologic/test