无法从module-info.java中找到模块

MrS*_*Sir 5 java java-9

我在同一文件夹中有2个不同的项目:com.jdojo.addresscom.jdojo.person。第一个有一个简单的pojo类Address和一个module-info.java默认包装:

module com.jdojo.address {
    exports com.jdojo.address;
}
Run Code Online (Sandbox Code Playgroud)

这里没有错误。

com.jdojo.person项目中,我有一个Person使用上一个Address属性的类。的module-info.java

module com.jdojo.person {
    requires com.jdojo.address;
    exports com.jdojo.person;
}
Run Code Online (Sandbox Code Playgroud)

requires在行中有一个错误:

找不到模块:com.jdojo.address

NetBeans IDE Dev(Build 201708030001)IntelliJ IDEA 2017.2.1都存在此问题。

????com.jdojo.address
?   ????.idea
?   ?   ????inspectionProfiles
?   ????nbproject
?   ?   ????private
?   ????src
?       ????com
?           ????jdojo
?               ????address
????com.jdojo.intro
?   ????.idea
?   ?   ????inspectionProfiles
?   ?   ????libraries
?   ????build
?   ?   ????classes
?   ?   ?   ????com
?   ?   ?       ????jdojo
?   ?   ?           ????address
?   ?   ?           ????intro
?   ?   ?           ????person
?   ?   ????empty
?   ?   ????generated-sources
?   ?       ????ap-source-output
?   ????dist
?   ????nbproject
?   ?   ????private
?   ????src
?   ?   ????com
?   ?       ????jdojo
?   ?           ????intro
?   ????test
????com.jdojo.person
?   ????.idea
?   ?   ????inspectionProfiles
?   ????nbproject
?   ?   ????private
?   ????src
?   ?   ????com
?   ?       ????jdojo
?   ?           ????person
?   ????test
????lib
????mods
?   ????com.jdojo.intro
?       ????com
?           ????jdojo
?               ????intro
????src
    ????com.jdojo.intro
        ????com
            ????jdojo
                ????intro
Run Code Online (Sandbox Code Playgroud)

这些是module-info和java类路径

C:\Java9Revealed\com.jdojo.address\src\module-info.java
C:\Java9Revealed\com.jdojo.address\src\com\jdojo\address\Address.java

C:\Java9Revealed\com.jdojo.person\src\module-info.java
C:\Java9Revealed\com.jdojo.person\src\com\jdojo\person\Person.java
Run Code Online (Sandbox Code Playgroud)

Mic*_*ter 6

根据《快速入门指南》,通常将源代码放在以模块命名的文件夹中。在这种情况下,文件夹结构应为:

com.jdojo.address/src/com.jdojo.address/module-info.java
com.jdojo.address/src/com.jdojo.address/com/jdojo/address/Address.java

com.jdojo.person/src/com.jdojo.person/module-info.java
com.jdojo.person/src/com.jdojo.person/com/jdojo/person/Person.java
Run Code Online (Sandbox Code Playgroud)

使用命令行工具(独立于任何IDE)进行实验很有启发性。我在这里说明了这种情况。

  • 可悲的是,我不知道这意味着什么。你添加了什么? (2认同)
  • @nullpointer Jigsaw项目的第一篇博客文章是在2008年12月。有邮件列表档案,但是要找到设计的基本原理是一项艰巨的任务。(在实践中,这是相当合理的。) (2认同)
  • 这一快速入门约定违背了标准 Java 项目目录结构,如 Eclipse IDE 所遵循的目录结构。此外,我不明白如何使用模块名称作为源文件包的父目录与运行时 jar 相关。该父目录不会出现在运行时 jar 中的任何位置。 (2认同)