我有以下目录结构:
src
+- java.base
+- java
+- lang
+- Object.java
+- java.logging
+- java
+- util
+- logging
+- FileHandler.java
+- com
+- example
+- MyClass.java
Object
,FileHandler
和MyClass
可以互相引用。
为了编译这些,我尝试运行(在src
目录中):
javac --patch-module java.base=java.base \
--patch-module java.logging=java.logging $(find . -name *.java)
但它导致错误:
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;
那么如何才能编译这些?
供参考:
src
目录中运行。 java.base
和java.logging
中的类可能会引用com.example
--add-reads
标志来破解封装。我想要的是能够在没有上述两个错误的情况下进行编译。