Java 使用DropBox核心API时发生NoClassDefFoundError

Java 使用DropBox核心API时发生NoClassDefFoundError,java,json,dropbox-api,Java,Json,Dropbox Api,我已经复制粘贴了官方DropBox API教程中的以下代码。这段代码的目的是上传一个文本文件。我使用的是DropBox-core-sdk-3.0.3.jar。但是我越来越 Exception in thread "main" java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonParseException at com.dropbox.core.DbxHost.<clinit>(DbxHost.java

我已经复制粘贴了官方DropBox API教程中的以下代码。这段代码的目的是上传一个文本文件。我使用的是
DropBox-core-sdk-3.0.3.jar
。但是我越来越

Exception in thread "main" java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonParseException
    at com.dropbox.core.DbxHost.<clinit>(DbxHost.java:114)
    at com.dropbox.core.v2.DbxClientV2.<init>(DbxClientV2.java:31)
    at dropboxtest.Main.main(Main.java:24)
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.core.JsonParseException
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
简短回答:使用而不是
jackson注释xxx

长答案:正如双子座的基思所指出的,问题在于我的课程路径。dropbox-core-sdk-3.0.3.jar实际上需要另一个库,它就是
jackson-core-2.6.1
。不过,DropBox for API v2的官方文档中没有提到这一点。但是通过DropBox查看API v1的文档,并阅读该行

必要的JAR文件位于“lib/”文件夹中


我继续下载API v1示例代码。然后从lib文件夹将
jackson-core-x.x.x
添加到我当前的类路径中,VIOLA一切正常

不要依赖IDE,自己运行它。检查输出JAR文件以确定是否存在
jackson-annotation-x.x.x.JAR
,并确保类绝对存在。请让我知道,如果一切似乎是正确的。顺便说一句,您应该粘贴有关运行应用程序的方式和应用程序的类路径的更多详细信息。否则,很难看出哪里出了问题。你指出了正确的方向。实际上,我不得不使用
jackson-core-2.xx
而不是
jackson annotation xx.xx.
DropBox忘了在他们的文档中提到它,否则我就是一个真正的新手。我现在回答我的问题。我添加了jackson-core-2.6.1,我的问题解决了,谢谢
package dropboxtest;

import com.dropbox.core.DbxException;
import com.dropbox.core.DbxRequestConfig;
import com.dropbox.core.v2.DbxClientV2;
import com.dropbox.core.v2.files.FileMetadata;
import com.dropbox.core.v2.files.ListFolderResult;
import com.dropbox.core.v2.files.Metadata;
import com.dropbox.core.v2.users.FullAccount;

import java.util.List;

import java.io.FileInputStream;
import java.io.InputStream;
import java.io.IOException;

public class Main {

    private static final String ACCESS_TOKEN = "XXXXXX";

    public static void main(String args[]) throws DbxException, IOException {
        // Create Dropbox client
        DbxRequestConfig config = new DbxRequestConfig("dropbox/java-tutorial", "en_US");
        DbxClientV2 client = new DbxClientV2(config, ACCESS_TOKEN);

        // Get current account info
        FullAccount account = client.users().getCurrentAccount();
        System.out.println(account.getName().getDisplayName());

        // Get files and folder metadata from Dropbox root directory
        ListFolderResult result = client.files().listFolder("");
        while (true) {
            for (Metadata metadata : result.getEntries()) {
                System.out.println(metadata.getPathLower());
            }

            if (!result.getHasMore()) {
                break;
            }

            result = client.files().listFolderContinue(result.getCursor());
        }

        // Upload "test.txt" to Dropbox
        try (InputStream in = new FileInputStream("test.txt")) {
            FileMetadata metadata = client.files().uploadBuilder("/test.txt")
                    .uploadAndFinish(in);
        }
    }
}