我正在从jar文件动态加载一个类并调用它。 (请参阅here和here)。
这适用于普通的java代码,但是当我尝试使用嵌入在同一个jar中的其他类时,我得到了
java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ObjectMapper
我尝试将我正在加载类的jar添加到类路径中(通过-cp或设置CLASSPATH环境变量)。都失败了。
我已经检查过并且ObjectMapper在jar中,如果我使用这个jar编译下面的内容然后在它运行的类路径中使用这个jar运行它。
import com.fasterxml.jackson.databind.ObjectMapper;
public class t {
static public void main(String args[]) {
ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper);
}
}
$ javac -cp build/libs/curler.jar t.java
$ java -cp build/libs/curler.jar:. t
com.fasterxml.jackson.databind.ObjectMapper@1efee8e7
我正在使用
java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)
您可以看到我如何调用代码here的示例。