首页 > 解决方案 > 在运行时找不到 Jar 依赖项

问题描述

我正在尝试使用我的 java 程序编译一个 jar 文件, javac -cp dependency.jar *.java然后使用它运行它java -cp dependency.jar mainPrgram 程序编译得很好,并且运行良好,直到使用依赖项进行函数调用。

我得到的例外如下

Exception in thread "main" java.lang.NoClassDefFoundError: com/google/gson/Gson
        at DFS.readMetaData(DFS.java:250)
        at DFS.touch(DFS.java:111)
        at CommandLine.<init>(CommandLine.java:41)
        at CommandLine.main(CommandLine.java:132)
Caused by: java.lang.ClassNotFoundException: com.google.gson.Gson
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 4 more

尝试了不同的解决方案

为什么我在 Java 中收到 NoClassDefFoundError?

运行时找不到jar中的类,但用于编译

但似乎没有一个工作

更新:代码在 Eclipse 中运行良好,但不能从命令行运行

用eclipse运行后,.classpath有以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
        <attributes>
            <attribute name="module" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="src" path=""/>
    <classpathentry kind="lib" path="C:/Users/MyPC/Documents/projects/MusicPlayer/gson-2.8.6.jar"/>
    <classpathentry kind="output" path=""/>
</classpath>

标签: javajsonjardependenciesgson

解决方案


你的程序针对 jar 成功完成。但是 jar 本身具有运行所需的依赖项。您需要将所有依赖项添加到类路径中,例如java -cp dependency.jar:subdependency.jar Main.


推荐阅读