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

Windows命令行无法执行带包声明的Java程序问题求助

Java程序运行找不到主类问题排查

问题详情

编写了带sample包声明的Java代码,在G:\javaPract目录执行编译命令javac PrivateMain.java成功生成PrivateMain.class文件,但执行时无论是运行java PrivateMain还是java sample.PrivateMain,均提示找不到主类错误。已通过set CLASSPATH=%CLASSPATH%;.配置类路径,问题仍未解决。

代码内容

package sample;

public class PrivateMain{
    public static void main(String[] args){
        System.out.println("This is from  main");
    }
}

命令行操作记录

G:\javaPract>javac PrivateMain.java  

G:\javaPract>java PrivateMain      
Error: Could not find or load main class PrivateMain

G:\javaPract>java sample.PrivateMain 
Error: Could not find or load main class sample.PrivateMain

G:\javaPract>set CLASSPATH=%CLASSPATH%;.

G:\javaPract>echo %CLASSPATH%
G:\javaPract;.

G:\javaPract>javac PrivateMain.java 

G:\javaPract>java PrivateMain      
Error: Could not find or load main class PrivateMain

G:\javaPract>java sample.PrivateMain 
Error: Could not find or load main class sample.PrivateMain

G:\javaPract>

目录文件列表

G:\javaPract>dir
 Volume in drive G is Learning
 Volume Serial Number is 008F-C257

 Directory of G:\javaPract

03/21/2023  08:04 AM    <DIR>          .
03/21/2023  08:04 AM    <DIR>          ..
05/17/2023  04:35 PM               280 PrivateMain.java
05/17/2023  04:36 PM               688 PrivateMain.class

遗漏的步骤及解决方法

Java要求包结构必须与文件系统的目录结构完全对应,你的问题就出在这里,需要按以下步骤修正:

  1. 在G:\javaPract目录下创建名为sample的文件夹
  2. 将PrivateMain.java移动到G:\javaPract\sample目录中
  3. 回到G:\javaPract目录,执行编译命令(-d .表示将编译生成的class文件放到当前目录的对应包结构下):
    javac sample/PrivateMain.java -d .
    
  4. 最后执行全限定类名运行程序:
    java sample.PrivateMain
    

原因说明

之前编译时没有指定包结构输出目录,生成的PrivateMain.class直接放在了G:\javaPract根目录,而JVM寻找sample.PrivateMain类时,会去G:\javaPract\sample目录下查找对应的class文件,所以找不到导致报错。

内容的提问来源于stack exchange,提问作者sampath

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 17:40:32