如何修复“线程“主”中的异常” java.lang.NoClassDefFoundError:com / dropbox / core / json / JsonReader $ FileLoadException”

时间:2019-08-13 10:40:12

标签: java maven dropbox

如果经验丰富的StackOverflow用户可以建议如何使问题更容易理解,请这样做。

我正在使用Eclipse Maven进行编译,并使用https://github.com/dropbox/dropbox-sdk-java中的示例,更具体地说是授权示例,因此我可以生成和认证文件,但是当我抓取所有代码并将其放在新的maven项目中并链接时到库的SDK仍然报告错误 有问题的错误显示为〜

C:\Authoriser\my-app>java -jar C:\Authoriser\my-app\target\my-app-1.0-SNAPSHOT.jar
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: com/dropbox/core/json/JsonReader$FileLoadException
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
        at java.lang.Class.privateGetMethodRecursive(Unknown Source)
        at java.lang.Class.getMethod0(Unknown Source)
        at java.lang.Class.getMethod(Unknown Source)
        at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.dropbox.core.json.JsonReader$FileLoadException
        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)
        ... 7 more

到目前为止,我已经尝试过移动lib文件并在堆栈溢出时查看了其他解决方案,但是大多数解决方案似乎是在不同的环境下进行的,否则我会变得更无能为力。 “类似问题”提示的问题包括 Exception in thread "main" java.lang.NoClassDefFoundError: com/twitter/chill/KryoBaseException in thread "main" java.lang.NoClassDefFoundError: com/google/gson/JsonParseExceptiong 但是,这些是在完全不同的情况下,我在github本身上提出了更多的要求,但没有任何回应。

我的pom.xml包含堆栈溢出解决方案中的附加内容,这些是对基本文件的唯一更改

<plugin>
  <!-- Build an executable JAR -->
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <version>3.1.0</version>
  <configuration>
    <archive>
      <manifest>
        <addClasspath>true</addClasspath>
        <classpathPrefix>lib/</classpathPrefix>
        <mainClass>com.mycompany.app.App</mainClass>
      </manifest>
    </archive>
  </configuration>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.2.0</version>
    <executions>
        <!-- Attach the shade into the package phase -->
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <mainClass>com.mycompany.app.App</mainClass>
                    </transformer>
                </transformers>
            </configuration>
        </execution>
    </executions>
</plugin>
<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.11</version>
</dependency>
<dependency>
    <groupId>com.dropbox.core</groupId>
    <artifactId>dropbox-core-sdk</artifactId>
    <version>3.1.1</version>
</dependency>

我的实际代码与Dropbox示例中的代码相同。

我在正确的文件夹中运行mvn clean package,然后运行 java -jar C:\ Authoriser \ my-app \ target \ my-app-1.0-SNAPSHOT.jar 会产生上述错误,而不是产生其他任何错误,例如没有任何错误。

1 个答案:

答案 0 :(得分:0)

我刚刚为pom.xml的{​​{1}}示例创建了以下authorize。只需将其放在dropbox-sdk-java下,看看您是否可以在任何地方使用它:

https://github.com/dropbox/dropbox-sdk-java/tree/master/examples/authorize