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

“如何修复”;“线程中的异常”;“主要”;java.lang.NoClassDefFoundError:com/dropbox/core/json/JsonReader$FileLoadException“;,java,maven,dropbox,Java,Maven,Dropbox,如果更有经验的StackOverflow用户可以建议如何使问题更容易理解,请这样做 我正在使用EclipseMaven编译一个示例,更具体地说是授权示例,这样我就可以生成和验证文件。然而,当我获取所有代码并将其放入一个新的Maven项目中,并在sdk中链接到库时,它仍然会报告错误 有问题的错误是~ C:\Authoriser\my-app>java -jar C:\Authoriser\my-app\target\my-app-1.0-SNAPSHOT.jar Error: A JNI e

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

我正在使用EclipseMaven编译一个示例,更具体地说是授权示例,这样我就可以生成和验证文件。然而,当我获取所有代码并将其放入一个新的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文件,并研究了其他关于堆栈溢出的解决方案,但是大多数解决方案似乎是在不同的上下文中,或者说我甚至更无能。“类似问题”提示的问题包括 及 然而,这些都是在完全不同的背景下进行的,我在github上问了更多,但没有任何回应(目前)

My 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>

org.apache.maven.plugins
maven jar插件
3.1.0
真的
解放党/
com.mycompany.app.app

org.apache.maven.plugins
maven阴影插件
3.2.0
包裹
阴凉处
com.mycompany.app.app

通用编解码器
通用编解码器
1.11
com.dropbox.core
dropbox核心sdk
3.1.1
我的实际代码与Dropbox示例中的代码相同

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

我刚刚为
授权
dropbox sdk java
示例创建了以下
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>


4.0.0
com.mycompany.app
我的应用程序
罐子
1.0-快照
我的应用程序
http://maven.apache.org
com.dropbox.core
dropbox核心sdk
3.1.1
org.apache.maven.plugins
maven阴影插件
3.2.0
包裹
阴凉处
com.dropbox.core.examples.authorize.Main

我可以问一下为什么不在构建中使用gradle吗?这些例子有gradle和gradle包装器,当我尝试按照它所说的说明来安装源代码为1.6时,您不需要安装任何东西(比如maven)(gradle?)仅支持1.7及以上版本。此外,我不知道如何很好地使用windows命令提示符,我也不知道gradle如何工作该命令将是bash/terminal下的
/gradlew authorize:run
,以及windows下的
gradlew.bat authorize:run
。哦,我明白了。这些例子也适用于Java1.8和更高版本。我在
build.gradle
中看到:sourceCompatibility=JavaVersion.VERSION\u 1\u 8 targetCompatibility=JavaVersion.VERSION\u 1\u 8javac-VERSION javac 1.8.0\u 221多谢您,我很快就会尝试,但我现在正忙着。
<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>
<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>