首页 > 解决方案 > Java手动添加lib,没有IDE

问题描述

有时我会在小例子中使用sublime+cmd 。我已经下载了一些 .jar,将它们添加到我的项目的 lib 目录中,导入了必要的类。



    import com.fasterxml.jackson.annotation.JsonAutoDetect;
    import com.fasterxml.jackson.databind.ObjectMapper;


这样编译:

javac Example.java -classpath ./lib/;./lib/jackson-core-2.12.5.jar;./lib/jackson-databind-2.12.5.jar;./lib/jackson-annotations-2.12.5.jar

启动后(java示例)它给出了响应:

线程“主”java.lang.NoClassDefFoundError 中的异常:com/fasterxml/jackson/databind/ObjectMapper
        在 Example.convertToJSON(Example.java:55)
        在 Example.main(Example.java:49)
引起:java.lang.ClassNotFoundException:com.fasterxml.jackson.databind.ObjectMapper
        在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:636)
        在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)
        在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
        ... 2 更多

标签: java

解决方案


Java 是动态链接的。在类路径中使用 Ceratin JAR 进行编译不会将它们“嵌入”到您的 jar 中,并且您还需要在执行程序时在类路径中提供它们:

java -cp ./lib/;./lib/jackson-core-2.12.5.jar;./lib/jackson-databind-2.12.5.jar;./lib/jackson-annotations-2.12.5.jar com.mypackage.Example

推荐阅读