You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 9运行Hello World报错:启动层初始化失败,模块未找到

解决Java 9模块找不到问题:Module com.pantech.myModule not found

遇到这个错误,大概率是模块的目录结构、编译输出或者命令参数出了问题,我给你一步步拆解排查和解决的方法:

1. 先确认模块的核心结构是否正确

Java 9的模块系统对目录结构有严格要求:模块的根目录必须直接包含module-info.class,同时该目录下要有对应包结构的.class文件。

举个正确的例子,假设你的工作目录是project(也就是你执行命令的那个bin的父目录),正确的bin目录结构应该是下面两种之一:

情况一:bin直接作为模块根目录

project/
└── bin/
    ├── module-info.class  # 必须在bin根目录下
    └── com/
        └── pantech/
            └── myModule/
                └── HelloWorld.class

情况二:bin下包含模块名子目录(模块根目录是子目录)

project/
└── bin/
    └── com.pantech.myModule/  # 这是模块根目录
        ├── module-info.class
        └── com/
            └── pantech/
                └── myModule/
                    └── HelloWorld.class

你的命令java --module-path bin -m com.pantech.myModule/com.pantech.myModule.HelloWorld是从project目录执行的,所以要确保bin目录下的结构符合上面任意一种。

2. 检查模块声明是否匹配

打开你的module-info.java,确认第一行的模块名和命令里的完全一致,包括大小写:

module com.pantech.myModule {
    // 如果HelloWorld是主类,至少要确保模块声明正确,需要导出包的话加 exports com.pantech.myModule;
}

如果这里写成了com.pantech.mymodule(小写m),命令里用大写的话肯定找不到模块。

3. 验证编译是否生成了正确的结构

如果编译命令不对,也会导致.class文件位置错误。比如你用javac编译时,要确保用-d参数指定输出目录为bin,并且把所有源文件都包含进去:

假设你的源代码在src目录下(对应情况一的结构),编译命令应该是:

javac -d bin src/module-info.java src/com/pantech/myModule/HelloWorld.java

这样编译后,bin目录下会直接生成module-info.class和对应的包结构。

4. 用命令验证模块是否能被识别

在project目录下执行这条命令,看看bin路径下能找到哪些模块:

java --list-modules --module-path bin

如果输出里没有com.pantech.myModule,说明模块路径下确实找不到这个模块,回到第一步检查目录结构。

5. 确认主类的全限定名正确

确保HelloWorld类的开头有正确的包声明:

package com.pantech.myModule;

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

命令里的com.pantech.myModule.HelloWorld必须和这个全限定名完全一致。

按照上面的步骤逐一排查,基本上就能解决模块找不到的问题了。

内容的提问来源于stack exchange,提问作者D. Pante

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:33:20