从命令行运行Java项目时出现问题

时间:2019-03-31 17:04:24

标签: java javafx

我有一个JavaFX项目,其中包含两个类和一个外部库。当我从IDE(IntelliJ Idea)运行它时,一切正常。但是当我使用命令从命令行运行它时:

java Main

程序启动,但是当我尝试使用与外部库关联的功能时,我有一个例外:

Exception in thread "Thread-4" java.lang.NoClassDefFoundError: com/google/gson/Gson

为什么通过IDE运行它时一切正常,而通过控制台运行时却看不到Gson库?

2 个答案:

答案 0 :(得分:1)

最常见的原因是创建jar时未导出Gson库。

当IDE运行您的代码时,它可以找到它。但是,当您将其导出到JAR且其中不包含相关的依赖项时,您会收到此错误。

答案 1 :(得分:1)

当您从IntelliJ或eclpse之类的IDE中运行程序时,它可能会自动包括外部jar,因为它是您自己的类路径,具体取决于您的设置。

如果要从命令行运行它,则需要使用-classpath参数将gson jar添加到您的类路径中。

java -classpath external-library.jar Main

参考:

Windows-https://docs.oracle.com/javase/8/docs/technotes/tools/windows/classpath.html

Unix-https://docs.oracle.com/javase/8/docs/technotes/tools/unix/classpath.html