我有一个Java项目,它使用http common-logging.jar、httpclient-4.4-alpha1.jar、httpcore-4.4-alpha1.jar、httpmime-4.4-alpha1.jar。我将我的Java项目转换为Maven项目,并将上述jar文件添加到我的pom.xml中。这是我的XML文件:
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>MyClient</groupId>
<artifactId>MyClient</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.4</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.4</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20090211</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
</build>
</project>我确实运行了As > Maven Clean and Run As > Maven Install,它构建了这个项目。它在目标文件夹中生成了一个名为MyClient-0.0.1-SNAPSHOT.jar的jar文件。我将此jar添加到使用此jar文件的另一个项目中(以进行HTTP调用),并收到错误消息
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/http/entity/mime/content/ContentBody谁能告诉我这是什么原因?这看起来像是一个依赖问题?谁能告诉我我哪里做错了?
发布于 2015-02-13 08:52:22
Maven不会自动将这些依赖项打包到jar文件中。这些文件仅用于编译代码和构建jar文件本身。正如jar plugin的文档所述:
生成的'jar‘文件包含已编译的java类文件以及来自src/main/resources的文件。
您有许多选项:
在使用jar文件的项目中,
时解决maven之间的传递依赖关系复制所有这些jar文件
https://stackoverflow.com/questions/28490279
复制相似问题