Java 9+ 项目可以在 Java 8 中使用单独的源模块吗?
Can a Java 9+ project use a separate source module in Java 8, untouched?
我有一个项目,使用 Maven 和 Java 11,它使用外部
用 Java 8 编写的库。只要库是它就可以正常工作
作为 Jar 文件导入。我正在使用 IntelliJ,但我正在寻找
对 Eclipse 也有效的答案。
我还从 GitHub 克隆了外部存储库,并且想要
在我的项目中以源代码形式使用它。一个目标是进行改进
到外部库,并能够将其上的拉取请求发送到
GitHub。但首先我希望从我的项目到库的调用能够正常工作
无需更改库源代码中的任何内容。
但是,我项目中的 class 从
外部图书馆无法做到这一点。
在 pom.xml 中,我尝试过
<modules>
<module>../path/to/external-libary</module>
</modules>
好像有点效果,但是导入还是不行。
当库用作 Jar 时,此依赖项有效:
<dependency>
<groupId>com.github.goxr3plus</groupId>
<artifactId>java-stream-player</artifactId>
<version>10.0.0</version>
</dependency>
我怀疑我必须在模块-info.java 或
pom.xml,但我想不通是什么。
如果外部库应被视为 自动模块(通过模块信息中的 'requires' 引用,而不是在 classpath),那么依赖项必须指向一个jar文件,因为自动模块只为jar文件定义。
Eclipse 通过将模块路径上的项目识别为自动模块,略微降低了限制,这在启动时仍然需要额外的步骤,因为 Java 运行时不会接受 class 文件的文件夹作为自动模块。
我有一个项目,使用 Maven 和 Java 11,它使用外部 用 Java 8 编写的库。只要库是它就可以正常工作 作为 Jar 文件导入。我正在使用 IntelliJ,但我正在寻找 对 Eclipse 也有效的答案。
我还从 GitHub 克隆了外部存储库,并且想要 在我的项目中以源代码形式使用它。一个目标是进行改进 到外部库,并能够将其上的拉取请求发送到 GitHub。但首先我希望从我的项目到库的调用能够正常工作 无需更改库源代码中的任何内容。
但是,我项目中的 class 从 外部图书馆无法做到这一点。
在 pom.xml 中,我尝试过
<modules>
<module>../path/to/external-libary</module>
</modules>
好像有点效果,但是导入还是不行。
当库用作 Jar 时,此依赖项有效:
<dependency>
<groupId>com.github.goxr3plus</groupId>
<artifactId>java-stream-player</artifactId>
<version>10.0.0</version>
</dependency>
我怀疑我必须在模块-info.java 或 pom.xml,但我想不通是什么。
如果外部库应被视为 自动模块(通过模块信息中的 'requires' 引用,而不是在 classpath),那么依赖项必须指向一个jar文件,因为自动模块只为jar文件定义。
Eclipse 通过将模块路径上的项目识别为自动模块,略微降低了限制,这在启动时仍然需要额外的步骤,因为 Java 运行时不会接受 class 文件的文件夹作为自动模块。