javac-Use——补丁模块和未命名的模块类
我有以下目录结构:javac-Use——补丁模块和未命名的模块类,java,javac,java-9,java-platform-module-system,java-module,Java,Javac,Java 9,Java Platform Module System,Java Module,我有以下目录结构: src +- java.base +- java +- lang +- Object.java +- java.logging +- java +- util +- logging +- FileHandler.java +- com +- example +- MyClass.java Object、
src
+- java.base
+- java
+- lang
+- Object.java
+- java.logging
+- java
+- util
+- logging
+- FileHandler.java
+- com
+- example
+- MyClass.java
Object
、FileHandler
和MyClass
可以相互交叉引用
为了编译这些,我尝试运行(在src
目录中):
但这会导致错误:
error: too many patched modules (java.base,java.logging), use --module-source-path
然后我试着:
javac --patch-module java.base=java.base \
--patch-module java.logging=java.logging \
--module-source-path . \
$(find . -name *.java)
然后我得到一个错误:
error: not in a module on the module source path package com.example;
那么我怎样才能编译这些文件呢
供参考:
- 假设javac在
目录中运行李>src
和java.base
中的类可以引用java.logging
com.example
- 我知道如何使用
标志来打破封装。我想要的是能够编译没有上述两个错误--addreads
——补丁模块
需要指向已编译的类,而不是源代码树。@AlanBateman我想你的意思是,
,而不是=
。但是这些补丁类也引用com.example中的类,我认为您需要两个javac命令,一个用于编译补丁,另一个用于编译com.example中的代码。首先,您的命令看起来不错,但如果对象类中有对FileHandle的引用,则可能需要--add reads java.base=java.logging。
error: not in a module on the module source path package com.example;