如果经验丰富的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/KryoBase 和Exception 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 会产生上述错误,而不是产生其他任何错误,例如没有任何错误。
答案 0 :(得分:0)
我刚刚为pom.xml
的{{1}}示例创建了以下authorize
。只需将其放在dropbox-sdk-java
下,看看您是否可以在任何地方使用它:
https://github.com/dropbox/dropbox-sdk-java/tree/master/examples/authorize