【问题标题】:Module moduleA not found in module source path , trying to compile在模块源路径中找不到模块 moduleA,正在尝试编译
【发布时间】:2019-06-04 08:50:42
【问题描述】:

i published java 9 modules tutorials + examples on Github回答了这个问题后,以及如何为未来的用户运行:

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

src 
│   module-info.java
│ 
└───moduleA
    └───pack1
            Main.java

module-info.java:

module moduleA {

}

Main.java:

package moduleA.pack1;
public class Main{

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

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

所以我从 cmd 运行:

编译

javac --module-source-path src -d out -m moduleA

运行

java  --module-path out -m moduleA/pack1.Main

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

我做错了什么

【问题讨论】:

  • 旁注:当您从 IntelliJ 运行应用程序时,您可以在它已执行的运行/调试窗口的第一行中看到确切的命令。
  • @Naman Aouu 谢谢你:) => "C:\Program Files\Java\jdk-11.0.3\bin\java.exe" -Dvisualvm.id=8708960290688 "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3.5\lib\idea_rt.jar=57689:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3.5\bin" -Dfile.encoding=UTF-8 -p C:\Atlassian\JPMS\out\production\JPMS -m moduleA/moduleA.pack1.Main
  • -p C:\Atlassian\JPMS\out\production\JPMS -m moduleA/moduleA.pack1.Main你知道你的模块和模块路径然后指定。
  • @Naman 我从 IntelliJ 中取出 src 文件夹并将其粘贴到桌面上。 `实际上我正在关注 Udemy 上的 udemy.com/… 教程,他为他执行的操作与为他运行的相同,但我不知道我的机器出了什么问题。

标签: java java-11 modularity java-module


【解决方案1】:

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

src
└───moduleA
    │───module-info.java
    └───moduleA
        └───pack1
            └───Main.java

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

java --module-path out -m moduleA/moduleA.pack1.Main

【讨论】:

  • @GOXR3PLUS 你把Main.java中的moduleA.pack1改成pack1了吗?
  • 是的,使用java --module-path out -m moduleA/pack1.Main 再次按预期工作,但它的设计很好吗? module-info.java 在带有 Maven packaging structure 的应用程序中的位置,src/main/java/com.companyName.projectName
  • @GOXR3PLUS module-info.java 应该在 src/main/java
  • 太好了,谢谢 :),我也发表了这个 => github.com/goxr3plus/java-modules-tutorial
【解决方案2】:

我面临的确切错误..(我遵循相同的示例) 只需确保 windows 中针对 "module-info" 的文件类型是 "JAVA File"

我确实通过 notepad++ 进行了编辑并选择了 java lang ,将类型显式更改为 java.it 对我有用,我没有像某些 cmets 中提到的那样做任何额外的事情。 我很确定你也一定是这种情况。

如果 javac 无法找到 module-info.java,则会出现此错误,因此该文件应该有问题(在我的情况下是文件类型)

PS:请提供学分/作者信息(Durgasoft),因为您已经从那里(在 git hub 中)复制了笔记信息。

【讨论】:

    【解决方案3】:

    看起来您正在尝试从桌面运行它,但桌面文件夹中不存在该文件。

    请参考以下链接并使用相对路径执行

    Unable to resolve module using --module-source-path

    【讨论】:

    • src 文件夹在桌面,我可以看到 :)
    猜你喜欢
    • 1970-01-01
    • 2018-11-06
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    相关资源
    最近更新 更多