使用命令行方式编译java代码时主类无法加载的问题

本文通过一个具体的Java IO示例,介绍了在命令行下遇到的主类无法加载的问题及其解决方法。作者最初怀疑是环境变量配置错误,但最终发现是因为IDE中复制的代码包含了包声明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

早上在看IO部分的时候,根据java编程思想书上的例子写了一个小的demo,由于涉及到main函数args的参数输入问题,本人就用命令行的方去编译代码,可是在在执行java的命令的时候发生了主类无法加载的问题。上网百度了一波后发现网上的大多问题都是由于java的环境变量没有配置好的缘故.下面我把标准的java配置,粘贴如下:
- JAVA_HOME是 D:\Java\jdk1.8.0_11
- Path是 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
- CLASSPATH是 .;%JAVA_HOME%lib;%JAVA_HOME%lib\tools.jar
本人的代码

package IOTest;//用命令行编译的时候去掉这一行就可以正常运行
import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
import java.util.regex.Pattern;

/**
 * All rights reserved.
 * Created by zhaideyin on 2017/10/16.
 * Description:
 */
public class DirList {
    public static void main(String[] args) {
        File mfile = new File("C:\\Users\\Administrator\\IdeaProjects\\untitled\\src\\com\\company");
        String[] mfileList;
        if (args.length == 0) {
            mfileList = mfile.list();
        } else {
            mfileList = mfile.list(new FilenameFilter() {
                private  Pattern mpattern = Pattern.compile(args[0]);
                @Override
                public boolean accept(File dir, String name) {
                    return mpattern.matcher(name).matches();
                }
            });
        }
        Arrays.sort(mfileList,String.CASE_INSENSITIVE_ORDER);
        for(String mitem:mfileList) {
            System.out.println(mitem);
        }

    }
}

使用命令行后的结果如下:
运行失败后无法加载主类的结果图

根据网络上的方法,原因都是java的环境变量没有配置好,尤其是CLASSPATH的变量配置,很多人都会不小心漏前面的“,;”,导致结果的出错。可是我在检查环境变量配置的时候是没有任何问题的。最后的原因是由于我的代码时直接从idea里面粘贴出来的,所以代码的第一行申明是包的声明,所以在加载的时候,才无法加载这个类。
去掉包的声明后运行的结果:
成功的截图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值