我有一个JavaFX项目,其中包含两个类和一个外部库。当我从IDE(IntelliJ Idea)运行它时,一切正常。但是当我使用命令从命令行运行它时:
java Main
程序启动,但是当我尝试使用与外部库关联的功能时,我有一个例外:
Exception in thread "Thread-4" java.lang.NoClassDefFoundError: com/google/gson/Gson
为什么通过IDE运行它时一切正常,而通过控制台运行时却看不到Gson库?
答案 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