我有一个包含两个类和一个外部库的JavaFX项目。当我在集成开发环境(IntelliJ Idea)中运行它时,一切都运行得很好。但是当我从命令行使用命令运行它时:
java Main
程序启动,但当我尝试使用与外部库关联的功能时,出现了一个异常:
Exception in thread "Thread-4" java.lang.NoClassDefFoundError: com/google/gson/Gson
为什么当我通过IDE运行它时,一切都运行得很好,而当我通过控制台运行它时,它不再看到库Gson?
发布于 2019-04-01 01:54:06
当你从你的集成开发环境中运行你的程序时,比如IntelliJ或者eclpse,它可能会自动地将外部jars包含到它自己的类路径中,这取决于你的设置。
如果希望从命令行运行gson 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
发布于 2019-04-01 01:15:09
最常见的原因是在创建jar时没有导出Gson
库。
当IDE运行您的代码时,它可以找到它。但是,当您将其导出到JAR时,如果它不包含相关的依赖项,则会出现此错误。
https://stackoverflow.com/questions/55443311
复制相似问题