okhttp3 在 java maven 项目中导致 java.lang.NoClassDefFoundError
okhttp3 causing java.lang.NoClassDefFoundError in java maven project
我知道有很多与此问题相关的问题,但 none 对我来说很有意义。我构建了一个 Java 桌面应用程序,它通过与 API 通信来添加待售产品。我正在使用 okhttp 3.9.0 来完成这个任务。问题是当我执行 Netbeans 的 "run project" 命令时我的应用程序工作正常但是当我使用 "java -jar file.jar" 命令到 运行 应用程序时我得到异常说明 okhttp3 类 没有找到。这是我第一次尝试 运行 在 IDE 之外的 Java 应用程序,所以我有点迷路了。
我运行正在安装我的应用程序来自:
C:\Users\Diego Alves\.m2\repository\com\mycompany\loja.0-SNAPSHOT
此外,让我感到困扰的是,在搜索 okhttp3 时,我通常会在 Android 相关页面上结束。 okhttp3不是用于桌面应用吗?
您需要将依赖项添加到您的 jar(okhttp 是其中之一)以便 JVM 可以在您的类路径中找到它们。为此,在 pom.xml 中添加以下 plugin:
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>your.package.MainClass</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
还要确保您已设置 <packaging>jar</packaging>
然后运行build(mvn clean install
),会生成一个jar,可以成功执行
java -jar target/your_jar_name.jar
对于 OkHTTP 没有 link 和 android,您可以在任何 Java 应用程序中使用它。
我知道有很多与此问题相关的问题,但 none 对我来说很有意义。我构建了一个 Java 桌面应用程序,它通过与 API 通信来添加待售产品。我正在使用 okhttp 3.9.0 来完成这个任务。问题是当我执行 Netbeans 的 "run project" 命令时我的应用程序工作正常但是当我使用 "java -jar file.jar" 命令到 运行 应用程序时我得到异常说明 okhttp3 类 没有找到。这是我第一次尝试 运行 在 IDE 之外的 Java 应用程序,所以我有点迷路了。
我运行正在安装我的应用程序来自:
C:\Users\Diego Alves\.m2\repository\com\mycompany\loja.0-SNAPSHOT
此外,让我感到困扰的是,在搜索 okhttp3 时,我通常会在 Android 相关页面上结束。 okhttp3不是用于桌面应用吗?
您需要将依赖项添加到您的 jar(okhttp 是其中之一)以便 JVM 可以在您的类路径中找到它们。为此,在 pom.xml 中添加以下 plugin:
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>your.package.MainClass</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
还要确保您已设置 <packaging>jar</packaging>
然后运行build(mvn clean install
),会生成一个jar,可以成功执行
java -jar target/your_jar_name.jar
对于 OkHTTP 没有 link 和 android,您可以在任何 Java 应用程序中使用它。