Java 模块目录或模块文件内部名称应相同或不同
目录结构 . ├── out │ └── calc-module │ ├── com │ │ └── ngsharma │ │ └── ocp │ │ └── Calculator.class │ └── module-info.class └── src └── calculator ├── com │ └── ngsharma │ └── ocp │ └── Calculator.java └── module-info.java 当我在下面的命令中编译这个模块时Java 模块目录或模块文件内部名称应相同或不同,java,java-9,java-module,module-info,module-path,Java,Java 9,Java Module,Module Info,Module Path,目录结构 . ├── out │ └── calc-module │ ├── com │ │ └── ngsharma │ │ └── ocp │ │ └── Calculator.class │ └── module-info.class └── src └── calculator ├── com │ └── ngsharma │
1.java-p out——添加模块calc module com.ngsharma.ocp.Calculator 当我使用这个命令时,它抛出异常FindException:Modulecalc Modulenot found
根据1。模块内部名称和模块目录名称应与其他抛出FindException相同
2java-p out——添加模块calc com.ngsharma.ocp.Calculator
但是在这种情况下,我没有使用模块目录名,我只在文件名中使用了module info.java,并成功运行了。怎样。。?为什么
模块文件名和模块文件夹名应该相同,否则不编译和运行它是否正确。请任何人建议我并纠正我的错误。(模块中的新手)。后一个命令
java -p out --add-modules calc com.ngsharma.ocp.Calculator
因为--add modules
接受modulepath(out
目录)上存在的模块名称作为参数,在本例中,模块名称是calc
,而不是module info.java
所在文件夹的名称
要直接回答这个问题,没有命令将生成模块的目录命名为与模块名称相同的目录。这(您的第一个命令)不起作用,因为没有命名为计算模块的模块。模块的名称为calc
,如module info.java
java -p out --add-modules calc-module com.ngsharma.ocp.Calculator <-- cannot work
编撰
直接父目录
如果所包含模块的目录名与模块名相同,则有一种方法可以轻松编译模块。在这种结构中:
.
+-- src
+-- calc
+-- com
¦ +-- ngsharma
¦ +-- ocp
¦ +-- Calculator.java
+-- module-info.java
现在,可以使用以下方法编译整个模块:
javac -d out --module-source-path src -m calc
out目录结构将自动具有模块的名称,因此与src结构相同
如果目录名与模块名不相同,则此命令将不起作用,在这种情况下,您将得到错误:模块源路径中未找到模块计算
程序的运行方式没有区别。这仅对编译有效
非直接父目录
使用--module source path
并不要求与模块名相同的目录名是包的直接父目录。您还可以创建此通用结构,其中模块名称位于根目录中的多个目录上:
.
+-- calc
+-- src
+-- main
+-- java
+-- com
¦ +-- ngsharma
¦ +-- ocp
¦ +-- Calculator.java
+-- module-info.java
但是,在这种情况下,您需要检查compile命令(如中所述):
请注意,不要求目录与模块本身共享名称。它只是有助于构建您的程序并简化编译。“根据java文档,模块文件名和模块文件夹名应该相同”,请为您的报价共享参考。“根据”什么?这句话没有意义。。除此之外,“模块文件名”始终是module info.java
(和module info.class
)。
java -p out --add-modules calc com.ngsharma.ocp.Calculator
java -p out --module calc/com.ngsharma.ocp.Calculator
.
+-- src
+-- calc
+-- com
¦ +-- ngsharma
¦ +-- ocp
¦ +-- Calculator.java
+-- module-info.java
javac -d out --module-source-path src -m calc
.
+-- calc
+-- src
+-- main
+-- java
+-- com
¦ +-- ngsharma
¦ +-- ocp
¦ +-- Calculator.java
+-- module-info.java
javac -d out --module-source-path "./*/src/main/java/" -m calc