【问题标题】:CouchDB4j/ mvn dependencies are missing缺少 CouchDB 4j/maven 依赖项
【发布时间】:2016-02-08 08:56:11
【问题描述】:

我无法以编程方式设置与本地 CouchDB 的连接。

我正在使用 couchDb4j- 一切看起来都不错,直到我运行并尝试连接到数据库。

我的控制台抛出以下错误:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/http/params/HttpParams
[...]
Caused by: java.lang.ClassNotFoundException: org.apache.http.params.HttpParams

由于我的小应用程序没有找到类,我检查了我的依赖项——一切都应该没问题。我有:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpcore</artifactId>
    <version>4.0-beta3</version>
</dependency>
<dependency>
    <groupId>commons-httpclient</groupId>
    <artifactId>commons-httpclient</artifactId>
    <version>3.1</version>
</dependency>

其中应包含所有必要的 http 特定 .jar(尤其是第一个应包含 httpParams 二进制文件;来源:http://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore/4.0-beta3)。

为了防止在我的系统上缓存错误的二进制文件,我正在运行以下命令:

mvn clean && mvn 包

我还删除了我的 .m2 文件夹。

谷歌搜索给了我提示,我的类路径可能是错误的,导致在运行时缺少依赖项。但是我已经在我的 pom 中设置了我的类路径;看这里:

<plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-jar-plugin</artifactId>
      <version>2.4</version>
      <configuration>
        <archive>
          <manifest>
            <addClasspath>true</addClasspath>
            <classpathPrefix>lib/</classpathPrefix>
            <mainClass>Packagename.Main</mainClass>
          </manifest>
        </archive>
      </configuration>
</plugin>

希望任何人都可以给我一个想法,以便我可以解决这个问题:)

最好的问候。

【问题讨论】:

  • 使用这个版本并检查&lt;dependency&gt; &lt;groupId&gt;org.apache.httpcomponents&lt;/groupId&gt; &lt;artifactId&gt;httpcore&lt;/artifactId&gt; &lt;version&gt;4.1&lt;/version&gt; &lt;/dependency&gt;
  • 此故障似乎与版本无关 - 我已添加 4.1 但这并没有解决问题。

标签: java maven dependencies couchdb pom.xml


【解决方案1】:

在插件声明中添加这些依赖项,如下所示:

<plugin>
  <groupId>...</groupId>
  <artifactId>...</artifactId>
  <version>...</version>
  <dependencies>
  ...
 </dependencies>
</plugin>

插件有自己的类路径

【讨论】:

  • 这会导致编译器问题,因为我们破坏了 pom.xml 的结构
【解决方案2】:

找到了解决办法。

问题是在执行期间缺少依赖项。

为了确保在运行时绑定所有必要的文件,我必须包含以下插件:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>1.6</version>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>shade</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

如果我做对了,它会将所有依赖项绑定到“uber”jar 上... 来源:https://maven.apache.org/plugins/maven-shade-plugin/

【讨论】:

    猜你喜欢
    • 2019-04-09
    • 2014-06-10
    • 2012-12-15
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多