从jar和classpath动态加载类

时间:2018-01-30 19:12:46

标签: java

我正在从jar文件动态加载一个类并调用它。 (请参阅herehere)。

这适用于普通的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的示例。

0 个答案:

没有答案