命令行运行Java程序,出现NoClassDefFoundError的解决办法 (含第三方jar包)

0、背景

  • 在IDEA中,基于Maven构建项目,测试时一般不会出现NoClassDefFoundError的问题。
public class HelloWorld {
    @Test
    public void test01() {
        String[] args = {"-V"};
        Main.main(args);
    }
}

输出:version 0.0.1

  • 当在命令行测试时,就会出现找不到依赖的第三方jar包,导致NoClassDefFoundError的问题。

由于在IDEA中已经运行过,故已经生成了xxx.class文件。然后,我想在命令行测试下:
D:\Code\IdeaProjects\writeJVM_01\target\classes>java com.forrest.writeJVM.Main -V
报错:Exception in thread “main” java.lang.NoClassDefFoundError: com/beust/jcommander/JCommander

在IDEA中运行,Maven帮我们做了依赖管理,可以找到JCommander,但命令行不行,故需要设置classpath

解决方法

D:\Code\IdeaProjects\writeJVM_01\target\classes>java -classpath ".;C:\Users\Forrest\.m2\repository\com\beust\jcommander\1.72\jcommander-1.72.jar" com.forrest.writeJVM.Main -V

运行结果:version 0.0.1

1、更好的方式

IDEA可以传入program arguments

image-20220313192703305image-20220313192745254

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值