标签: unnamed-module

Java 9 迁移问题 - 包 com.mymodule 在未命名模块中声明,模块“newmodule”不读取它

我创建了一个具有以下结构的多模块项目

    myproject
      |- mymodule
         |- src
            |- main
               |- java
                  |- com
                     |- mymodule
                        |- Util.java

      |-newmodule
         |-src
           |-main
             |-java
               |-com
                 |-newmodule
                    |- Main.java
             |-module-info.java
Run Code Online (Sandbox Code Playgroud)

现在我想使用 Util.java,它是模块化模块 newmodule 中的非模块化代码。我已经在 newmodule 中声明了以下内容

module newmodule {
    requires mymodule;
}
Run Code Online (Sandbox Code Playgroud)

项目编译正常,但 Intellij 显示模块未找到并且包 com.mymodule 在未命名模块中声明,模块“newmodule”不读取它。

如何解决这个问题?

还有一个问题,如果我什至不模块化遗留模块,所有旧的非模块化代码是否在默认情况下都会变成 java 9 中的自动模块?

java migration java-9 java-module unnamed-module

9
推荐指数
1
解决办法
7398
查看次数

在Java 9中创建了多少个未命名的模块?

我试图了解JPMS的工作原理.

这里开始

类路径还没有完全消失.所有JAR(模块化或非模块化)和类路径上的类都将包含在未命名模块中.与自动模块类似,它导出所有包并读取所有其他模块.但显然它没有名字.因此,命名的应用程序模块不能要求和读取它.未命名的模块又可以访问所有其他模块.

请注意...on the classpath will be contained in the Unnamed Module.模块是单数.

这里开始

为了兼容性,类路径上的所有代码都打包为一个特殊的未命名模块,没有隐藏的包和对整个JDK的完全访问权限.

再次unnamed module.模块是单数.

我是否理解JPMS中始终只有一个未命名的模块?是否意味着在Java9之前开发但未针对Java9更新的应用程序将作为一个未命名的模块加载?

java java-9 java-module unnamed-module

6
推荐指数
2
解决办法
2342
查看次数

使用 gradle 依赖 Java 9 模块系统库中的遗留 jar

问题

如何创建一个 java 库 jar 来:

  • 是java模块(有module-info
  • 有一个依赖的遗留(非模块)jar。(喜欢commons-exec)?

依赖项是一个实现细节 - 不应导出。

来源

具有以下条件build.gradle(使用gradle-6.8):

plugins {
    id 'java-library'
}

group = 'test'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '15'

repositories {
    mavenCentral()
}
java {
    modularity.inferModulePath = true
}

dependencies {
    implementation 'org.apache.commons:commons-exec:1.3'
}
Run Code Online (Sandbox Code Playgroud)

以及以下内容module-info.java

module test.module {
    requires commons.exec;
}
Run Code Online (Sandbox Code Playgroud)

错误

我收到以下编译错误:

module-info.java:2: error: module not found: commons.exec
    requires commons.exec;
                    ^
Run Code Online (Sandbox Code Playgroud)

如果我不包含,requires commons.exec则错误将变为:

error: package org.apache.commons.exec is not visible …
Run Code Online (Sandbox Code Playgroud)

java gradle java-platform-module-system java-9 unnamed-module

6
推荐指数
1
解决办法
2658
查看次数