在不同的地方我看到了以下信息:未命名模块中的类被允许读取模块路径上的导出包。
在目录 src/calculators 我有 module-info.java 文件:
module calculators {
exports calculators;
}
在目录 src/calculators/calculators 我有 InterestCalculator.java 文件:
package calculators;
public interface InterestCalculator {
public double calculate(double principle, double rate, double time);
}
我已经使用以下命令编译了模块:
java --module-source-path src --module calculators -d out
然后我用以下命令打包了编译模块:
jar --create --file calculators.jar -C out/calculators/ .
现在我的非模块化应用程序有以下类(在同一个目录中):
import calculators.InterestCalculator;
class SimpleInterestCalculator implements InterestCalculator {
public double calculate(double principle, double rate, double time){
return principle * rate * time;
}
}
import calculators.InterestCalculator;
class Main {
public static void main(String[] args) {
InterestCalculator interestCalculator = new SimpleInterestCalculator();
}
}
当我尝试使用带有命令的模块编译我的应用程序时:
javac --module-path calculators.jar *.java
我得到了错误:
Main.java:1: error: package calculators is not visible
import calculators.InterestCalculator;
^
(package calculators is declared in module calculators, which is not in the module graph)
SimpleInterestCalculator.java:1: error: package calculators is not visible
import calculators.InterestCalculator;
^
(package calculators is declared in module calculators, which is not in the module graph)
2 errors
为什么?应用程序类不应该能够读取导出的包吗?我在这里做错了什么?