这个问题在这里已经有答案了:
为什么我在java中遇到noclassdeffounderror(30个答案)
三天前关门了。
我正在尝试编译一个java文件,它使用多个jar文件作为导入。我用来编译代码的命令:
javac -cp jackson-databind-2.12.1.jar:jackson-core-2.12.1.jar:jackson-annotations-2.12.1.jar TestRunner.java
结果创建了两个.class文件:testrunner.class和testrunner$1.class
然后我运行命令:
java TestRunner
但它抛出了一个错误:
Error: Unable to initialize main class TestRunner Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/type/TypeReference
我已经在javac命令中包含了所有必需的库,并用ide对其进行了测试,效果良好。我试过其他版本的Jackson图书馆,但我坚持与相同的错误。
1条答案
按热度按时间gt0wga4j1#
在运行代码时,需要使用相同的方法指定类路径
-cp
编译时使用的参数,以及编译类所在的文件夹。在你的cas里,这意味着
java -cp .:jackson-databind-2.12.1.jar:jackson-core-2.12.1.jar:jackson-annotations-2.12.1.jar TestRunner
指定的库不包括在.class
文件生成,所以java仍然需要它们来理解如何调用不是来自类文件的代码。