我正在一起使用netbeans 7.1.1和ivy。我有ivy.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0">
<info module="Laitsv3second" organisation="Laitsv3second" revision="1.0"/>
<dependency org="org.apache.httpcomponents" name="httpclient" rev="latest.integration">
</dependency>
</ivy-module>
现在问题如下:我的项目也使用log4j库。当我运行该项目时,我得到了如下错误:
java.lang.NoClassDefFoundError: org/apache/http/client/methods/HttpUriRequest
下载的httpclient库包含这个类org.apache.http.client.methods.HttpUriRequest.java,但这是一个接口,因此出现了这个错误。我观察到ivy链接了ivy库中的sources.jar,该库包含java接口,但我希望httpclient.jar包含在项目中,该项目是包含.class
文件的源代码的编译版本。这有可能吗?
首先,您的ivy文件无效。您缺少封闭的"依赖项"标签:
<ivy-module version="2.0">
<info module="Laitsv3second" organisation="Laitsv3second" revision="1.0"/>
<dependencies>
<dependency org="org.apache.httpcomponents" name="httpclient" rev="latest.integration"/>
</dependencies>
</ivy-module>
我怀疑真正的问题是您没有在ANT构建中正确设置类路径。无法根据现有信息进行进一步诊断。
我建议使用以下答案中的工作示例:
- 在build.xml中找不到包含Ant、Ivy和JUnit的类-错误
我建议查看它如何使用ivy文件中的配置以及ivy任务,如:
- cachepath-用于根据ivy中的配置创建ANT路径
- report-用于记录ivy如何解析其依赖关系。为ivy文件中的每个配置创建的报告
- retrieve-用于在本地安装已解析的文件。构建分发时很有用
- manifestclasspath-鲜为人知的ANT任务,当与ivy检索结合时非常强大
上面提到的错误是因为ivy库没有添加到java类路径中。这个问题在ivyBeans网站上有报道。以下是问题的详细信息。如上所述,我也通过关闭netbeans中的"保存时编译"选项来解决这个问题。我认为这个解决方案可能会帮助其他人,因此发布。