【问题标题】:Error occurred during initialization of boot layer FindException: Module not found启动层初始化时出错 FindException: Module not found
【发布时间】:2018-09-06 07:59:44
【问题描述】:

使用 Java 9 执行简单的“Hello World”程序会导致以下错误消息:

启动层初始化时出错
java.lang.module.FindException:找不到模块 com.pantech.myModule

我执行的命令行是:

java --module-path bin -m com.pantech.myModule/com.pantech.myModule.HelloWorld

此命令行从包含所有.class 字节码文件的bin 目录的父目录执行。

module-info.class 文件位于com.pantech.myModule 目录中,该目录位于bin 目录中。 HelloWorld.class 文件包含 main 方法,位于 com.pantech.myModule 目录内的包目录中。因此,HelloWorld.class 文件的路径名为 bin\com.pantech.myModule\com\pantech\myModule\HelloWorld.class

HelloWorld 类在com.pantech.myModule 包中(包名与模块名相同)。

我使用 Windows 10 作为操作系统。从我读过的所有内容来看,上面的命令行应该是正确的。有关如何解决此问题的任何建议?

【问题讨论】:

  • 编译后的模块文件在哪个目录?似乎您需要添加到模块路径的目录是bin\com.pantech.myModule
  • 编译后的模块文件(module-info.class)位于bin\com.pantech.myModule目录下。
  • 能否把类定义(从包声明开始)和模块定义也分享一下,以便转载以上内容,好吗?老实说,对于这样的实验,我以the quick-start here 为参考。 (您可能还想交叉验证编译命令)
  • 模块定义文件 (module-info.java) 位于 com.pantech.myModule 目录中包含以下内容: module myModule {} HelloWorld 文件的源代码包含以下内容: package com.pantech.myModule ;公共类 HelloWorld { public static void main(String [] args) { System.out.println("来自模块的 Hello World"); } }
  • @D.Pante answer by tretegfdg 似乎在指出你犯的错误。这就是为什么我建议也参考指南。那里的模块名称与包名称com.greetings(在示例中)相同,因此它们的命令有效。另外,请参阅docs.oracle.com/javase/9/tools/java.htm 了解有关使用的命令的更多详细信息。

标签: java java-9 java-module


【解决方案1】:

这背后的原因是,在创建自己的类的同时,您还接受了按照您的 IDE 规定创建一个默认类,并且在您自己的类中编写代码后,您会收到这样的错误。为了消除这种情况,请转到 PROJECT 文件夹 → src → 默认包。只保留一个类(您在其中编写过代码)并删除其他类。

之后,运行你的程序,它肯定会运行没有任何错误。

【讨论】:

    【解决方案2】:

    我在执行 selenium 测试时遇到了同样的问题,我在 eclipse 中的 Build 路径下从 ModulePath 到 ClassPath 中删除了 selenium 依赖项,它起作用了!

    【讨论】:

    • 我遇到了同样的问题,这解决了它
    【解决方案3】:

    我有类似的问题,我遇到的问题是我在modulepath 下添加了selenium-server-standalone-3.141.59.jar 而它应该在classpath

    所以通过(project -> Properties -> Java Bbuild Path -> Libraries)选择classpath 添加最新下载的jar

    添加后一定是这样的

    并且必须为我下载适当的浏览器驱动程序我检查并下载了相同版本的 chrom for chrome driver 并添加到 C:\Program Files\Java

    以下是对我来说很好的代码

    public class TestuiAautomation {
    
        public static void main(String[] args) {
    
            System.out.println("Jai Ganesha");
            try {
                System.setProperty("webdriver.chrome.driver", "C:\\Program Files\\Java\\chromedriver.exe");
                System.out.println(System.getProperty("webdriver.chrome.driver"));
                ChromeOptions chromeOptions = new ChromeOptions();
                chromeOptions.addArguments("no-sandbox");
                chromeOptions.addArguments("--test-type");
                chromeOptions.addArguments("disable-extensions");
                chromeOptions.addArguments("--start-maximized");
                WebDriver driver = new ChromeDriver(chromeOptions);
                driver.get("https://www.google.com");
                System.out.println("Google is selected");
            } catch (Exception e) {
                System.err.println(e);
            }
    
        }
    }
    

    【讨论】:

      【解决方案4】:

      你说你的module-info.java 包含

      module myModule {}
      

      这意味着它声明了一个名为 myModule 的模块,不是 com.pantech.myModule。从命令格式指出这一点:

       -m <module-name>/<main-class>
      

      【讨论】:

      • 谢谢。该问题通过将 module-info.java 文件中的模块名称更改为 com.pantech.myModule 而不仅仅是 myModule 来解决。解决方案对我来说应该是显而易见的,但我想我正在寻找更模糊的东西。
      • 你能解释一下吗?我仍然无法弄清楚我应该做出哪些改变。
      【解决方案5】:

      我遇到了同样的问题,我用这种方式解决了它:

      1. 从 Eclipse 中删除了所有项目,而不是从计算机中。
      2. 创建了一个新项目,一旦你写下你的项目名称,你会得到另一个窗口,其中写着:“Create module-info.java”。我只是点击了“不创建”。
      3. 创建了一个包。让我们调用这个包mywork
      4. 在包myWork 中创建了一个Java 类。让我们给班级打电话HelloWorld
      5. 我正常运行该文件,它工作正常。

      注意:首先,使用 CMD 命令确保 Java 正常运行,这样您就会明白问题出在 eclipse 上,而不是 JDK 上。

      【讨论】:

        【解决方案6】:

        我通过进入 Properties -> Java Build Path 并重新排序我的源文件夹,使其位于 JRE 系统库之上,从而解决了这个问题。

        【讨论】:

        • 尝试同样的事情,但它不能解决错误
        【解决方案7】:

        我刚刚在将 bin 文件夹添加到 .gitignore 后遇到了同样的问题,不确定是不是这个问题。

        我通过转到 Project/Properties/Build Path 解决了这个问题,我删除了 scr 文件夹并再次添加它。

        【讨论】:

          【解决方案8】:

          检查您在 jdk 9 中构建的项目是否高于 Eclipse 的模块存在一些问题。改成jdk 9就可以正常运行了

          【讨论】:

            【解决方案9】:

            在删除我的 bin 文件夹以将其从我的 git 历史记录中删除后,我发生了这个问题。要解决这个问题 在 Eclipse 中:

            1. 删除项目(从 Eclipse,而不是从磁盘)
            2. 重新导入。

            【讨论】:

              【解决方案10】:

              尝试从项目的 Java 构建路径中删除 JRE 系统库。然后通过单击添加库在模块下再次添加它。

              【讨论】:

                【解决方案11】:

                当我将 Java 版本更新到 12.x 时,我遇到了同样的问题。我正在通过 Eclipse IDE 执行我的项目。我不确定这个错误是否是由兼容性问题引起的。

                但是,我从系统中删除了 12.x 并安装了 8.x,我的项目开始正常运行。

                【讨论】:

                  猜你喜欢
                  • 2021-08-31
                  • 1970-01-01
                  • 2021-07-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2019-05-07
                  • 2022-01-12
                  • 1970-01-01
                  相关资源
                  最近更新 更多