Java 11. javac/ 警告:[选项] --add-reads 选项中的模块名称未找到:moduleB
Java 11. javac/ warning: [options] module name in --add-reads option not found: moduleB
我有一个 java 11 模块的小项目,它由两个模块 moduleA 和 modules.
模块B
MyService.java
package com.company.packageB;
public class MyService {
public String getHelloWorld(){
return "Hello world!";
}
}
模块-info.java
module moduleB {}
模块A
模块-info.java
module moduleA {}
Main.java
package com.company.packageA;
import com.company.packageB.MyService;
public class Main {
public static void main(String[] args) {
MyService myService = new MyService();
String s = myService.getHelloWorld();
System.out.println(s);
}
}
我想 运行 这个项目。
我用这个命令编译 moduleB
javac -d out/moduleB $(find ./moduleB -name "*.java")
然后我想编译模块A,
javac -p out/moduleB --add-reads moduleA=moduleB --add-exports moduleB/com.company.packageB=moduleA -d out/moduleA $(find ./moduleA -name "*.java")
但我 运行 进入问题:
warning: module name in --add-reads option not found: moduleB
warning: [options] module name in --add-exports option not found: moduleB
./moduleA/src/com/company/packageA/Main.java:3: error: package com.company.packageB does not exist
import com.company.packageB.MyService;
^
./moduleA/src/com/company/packageA/Main.java:7: error: cannot find symbol
MyService myService = new MyService();
^
symbol: class MyService
location: class Main
如何使用 --add-export 和 --add-reads 选项编译模块 A?
您应该先导出包,然后再尝试在另一个模块中使用其中的 类。
所以,首先 moduleB
应该将包导出为:
module moduleB {
exports com.company.packageB;
}
然后另一个模块 moduleA
应该需要模块 B -
module moduleA {
requires moduleB;
}
我有一个 java 11 模块的小项目,它由两个模块 moduleA 和 modules.
模块B MyService.java
package com.company.packageB;
public class MyService {
public String getHelloWorld(){
return "Hello world!";
}
}
模块-info.java
module moduleB {}
模块A 模块-info.java
module moduleA {}
Main.java
package com.company.packageA;
import com.company.packageB.MyService;
public class Main {
public static void main(String[] args) {
MyService myService = new MyService();
String s = myService.getHelloWorld();
System.out.println(s);
}
}
我想 运行 这个项目。 我用这个命令编译 moduleB
javac -d out/moduleB $(find ./moduleB -name "*.java")
然后我想编译模块A,
javac -p out/moduleB --add-reads moduleA=moduleB --add-exports moduleB/com.company.packageB=moduleA -d out/moduleA $(find ./moduleA -name "*.java")
但我 运行 进入问题:
warning: module name in --add-reads option not found: moduleB
warning: [options] module name in --add-exports option not found: moduleB
./moduleA/src/com/company/packageA/Main.java:3: error: package com.company.packageB does not exist
import com.company.packageB.MyService;
^
./moduleA/src/com/company/packageA/Main.java:7: error: cannot find symbol
MyService myService = new MyService();
^
symbol: class MyService
location: class Main
如何使用 --add-export 和 --add-reads 选项编译模块 A?
您应该先导出包,然后再尝试在另一个模块中使用其中的 类。
所以,首先 moduleB
应该将包导出为:
module moduleB {
exports com.company.packageB;
}
然后另一个模块 moduleA
应该需要模块 B -
module moduleA {
requires moduleB;
}