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