How to fix "Exception in thread "main" java.lang.NoClassDefFoundError: com/dropbox/core/json/JsonReader$FileLoadException"
How to fix "Exception in thread "main" java.lang.NoClassDefFoundError: com/dropbox/core/json/JsonReader$FileLoadException"
如果更有经验的 Whosebug 用户可以建议如何使问题更容易理解,请这样做。
我正在使用 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 文件并查看了有关堆栈溢出的其他解决方案,但是大多数似乎都处于不同的上下文中,或者我更加无能。 "Similar Questions" 提示的问题包括
然而,这些是在完全不同的背景下,我进一步询问 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
这会产生上述错误,而不是产生任何其他错误,例如没有任何错误。
我刚刚为 dropbox-sdk-java
的 authorize
示例创建了以下 pom.xml
。只需将它放在 https://github.com/dropbox/dropbox-sdk-java/tree/master/examples/authorize
下,看看你是否可以用它去任何地方:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>my-app</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>com.dropbox.core</groupId>
<artifactId>dropbox-core-sdk</artifactId>
<version>3.1.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<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.dropbox.core.examples.authorize.Main</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
如果更有经验的 Whosebug 用户可以建议如何使问题更容易理解,请这样做。
我正在使用 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 文件并查看了有关堆栈溢出的其他解决方案,但是大多数似乎都处于不同的上下文中,或者我更加无能。 "Similar Questions" 提示的问题包括
我的 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 这会产生上述错误,而不是产生任何其他错误,例如没有任何错误。
我刚刚为 dropbox-sdk-java
的 authorize
示例创建了以下 pom.xml
。只需将它放在 https://github.com/dropbox/dropbox-sdk-java/tree/master/examples/authorize
下,看看你是否可以用它去任何地方:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>my-app</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>com.dropbox.core</groupId>
<artifactId>dropbox-core-sdk</artifactId>
<version>3.1.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<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.dropbox.core.examples.authorize.Main</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>