【问题标题】:okhttp3 causing java.lang.NoClassDefFoundError in java maven projectokhttp3 在 java maven 项目中导致 java.lang.NoClassDefFoundError
【发布时间】:2018-01-25 16:24:53
【问题描述】:

我知道有很多与此问题相关的问题,但对我来说没有任何意义。我构建了一个 Java 桌面应用程序,它通过与 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 不是用于桌面应用吗?

【问题讨论】:

  • 您可能想对如何打包可执行 jar 以及如何管理可执行 jar 的类路径进行一些研究。 Netbeans(和 Maven)将对您隐藏所有有价值的知识,但只要您不了解 Java 平台的基本基础知识,您就会不断遇到工具不做您想做的事情的问题,因为您不这样做不知道去哪里找。

标签: java maven netbeans okhttp3


【解决方案1】:

您需要将依赖项添加到您的 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>

还要确保您已设置&lt;packaging&gt;jar&lt;/packaging&gt;

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

java -jar target/your_jar_name.jar

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

【讨论】:

  • okhttp 在移动开发中非常流行,这可以解释该领域的许多搜索结果。
  • 您是否将 your.package.MainClass 替换为包含 main 方法的类?
猜你喜欢
  • 2020-10-11
  • 2017-08-24
  • 2016-12-16
  • 2018-03-07
  • 2012-08-19
  • 2013-07-07
  • 1970-01-01
相关资源
最近更新 更多