引导层FindException初始化期间发生错误:找不到模块

D. *_*nte 8 java java-9 java-module

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

引导层
java.lang.module.FindException 初始化期间发生错误:找不到模块com.pantech.myModule

我执行的命令行是:

java --module-path bin -m com.pantech.myModule/com.pantech.myModule.HelloWorld
Run Code Online (Sandbox Code Playgroud)

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

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

HelloWorld类是在com.pantech.myModule包(package名称相同模块名称)。

我使用Windows 10作为操作系统。从我阅读的所有内容来看,上述命令行应该是正确的。对于如何解决这个问题,有任何的建议吗?

小智 10

这背后的原因是,在创建自己的类的同时,您也接受了按照IDE的规定创建默认类的知识,并且在自己的类中编写代码之后,您会遇到此类错误。为了消除这种情况,请转到PROJECT文件夹-> src文件夹->默认程序包,仅保留一个类(在其中编写了代码),然后删除另一个类。

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


Par*_*war 9

我有类似的问题,我面临的问题是我添加了下面selenium-server-standalone-3.141.59.jarmodulepath不是它应该在下面classpath

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

添加后应该是这样的

在此输入图像描述

必须为我下载适当的浏览器驱动程序,我检查并下载了相同版本的 chrome for chrome驱动程序,并将其添加到 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);
        }

    }
}
Run Code Online (Sandbox Code Playgroud)


小智 7

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


小智 5

你说你的module-info.java包含

module myModule {}
Run Code Online (Sandbox Code Playgroud)

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

 -m <module-name>/<main-class>
Run Code Online (Sandbox Code Playgroud)

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

小智 5

我有同样的问题,我是这样解决的:

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

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