我在同一个文件夹中有两个不同的项目:com.jdojo.address
和com.jdojo.person
。第一个在默认包下有一个简单的pojo类Address
和一个module-info.java
:
module com.jdojo.address {
exports com.jdojo.address;
}
此处没有错误。
在com.jdojo.person
项目中,我有一个Person
类,它使用前一个Address
属性。 module-info.java
:
module com.jdojo.person {
requires com.jdojo.address;
exports com.jdojo.person;
}
我在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
这些是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
答案 0 :(得分:4)
Per the Quick Start guide,通常将源代码放在以模块命名的文件夹中。在这种情况下,文件夹结构应为:
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
使用独立于任何IDE的命令行工具进行实验是很有启发性的。我已经说明了这个案例here。