在模块源路径中找不到模块 moduleA ,正在尝试编译

GOX*_*LUS 5 java modularity java-module java-11

在回答这个问题后,我在 Github 上发布了 Java 9 模块教程 + 示例以及如何为未来用户运行:

我有以下非常简单的结构:

src 
?   module-info.java
? 
????moduleA
    ????pack1
            Main.java
Run Code Online (Sandbox Code Playgroud)

module-info.java :

module moduleA {

}
Run Code Online (Sandbox Code Playgroud)

Main.java

package moduleA.pack1;
public class Main{

 public static void main(String[] args){
   System.out.println("Hello Java 11");
 }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试编译然后运行这个非常简单的模块化 java 应用程序。

所以从我运行的 cmd 开始:

编译

javac --module-source-path src -d out -m moduleA
Run Code Online (Sandbox Code Playgroud)

java  --module-path out -m moduleA/pack1.Main
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

从 IntelliJ 开始,它的作用就像魅力一样,我不知道它背后有什么魔力。

我做错了什么?

Zhe*_*lov 4

--module-source-path通常用于一次编译多个模块。当然,如果您愿意,您可以用它编译单个模块。但是,您必须将源文件移动到模块名称的目录中:

\n\n
src\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80moduleA\n    \xe2\x94\x82\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80module-info.java\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80moduleA\n        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80pack1\n            \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80Main.java\n
Run Code Online (Sandbox Code Playgroud)\n\n

另外,您应该修复运行模块的命令行:

\n\n
java --module-path out -m moduleA/moduleA.pack1.Main\n
Run Code Online (Sandbox Code Playgroud)\n

  • @GOXR3PLUS `module-info.java` 应该在 `src/main/java` 中 (2认同)