okhttp3导致java maven项目中的java.lang.NoClassDefFoundError

时间:2018-01-25 16:24:53

标签: java maven netbeans okhttp3

我知道有很多与此问题相关的问题,但对我来说没有任何意义。我构建了一个Java Desktop应用程序,通过与API通信来添加待售产品。我使用okhttp 3.9.0来完成这项任务。问题是我的应用程序在我执行Netbeans的“运行项目”命令时运行正常,但是当我使用“java -jar file.jar”命令运行应用程序时,我得到异常,说明找不到okhttp3类。这是我第一次尝试在IDE之外运行Java应用程序,所以我有点迷失。

我正在运行我的应用程序:

 C:\Users\Diego Alves\.m2\repository\com\mycompany\loja\1.0-SNAPSHOT

另外,让我感到困惑的是,在搜索okhttp3时,我通常会在Android相关页面上结束。是不是okhttp3用于桌面应用程序?

1 个答案:

答案 0 :(得分:2)

您需要向jar添加依赖项(okhttp就是其中之一),以便JVM可以在类路径中找到它们。为此,请在 pom.xml 中添加以下插件

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

然后运行构建(mvn clean install),它将生成一个可以成功执行的jar。

java -jar target/your_jar_name.jar

对于 OkHTTP ,没有与android的链接,您可以在任何Java应用程序中使用它。