maven解析依赖但无法在其中找到包/类

时间:2012-04-12 11:47:17

标签: maven dependencies osgi

在自定义geotools平台编译(事实上基于OSGi)中,当我尝试构建它时,其中一个模块正确编译。但是当我构建整个项目时 - 它在compile阶段失败,原因是它无法找到某些包/类。能够很好地解决依赖问题。

这是模块的pom.xml的依赖关系:

<dependency>
   <groupId>org.picocontainer</groupId>
   <artifactId>com.springsource.org.picocontainer</artifactId>
   <version>1.2.0</version>
</dependency>

maven的构建错误部分:

  

... \ geotools-的OSGi \模块\扩展\ XSD \ XSD核\ SRC \主\的java \有机\ geotools \ XS \绑定\ XSGroupBinding.java:[19,24]   包org.picocon tainer不存在

     

... \ geotools-osgi \ modules \ extension \ xsd \ xsd -core \ src \ main \ java \ org \ geotools \ xml \ AbstractComplexBinding.java:[20,24] package org.picocon tainer不存在

     

... \ geotools-的OSGi \模块\扩展\ XSD \ XSD核\ SRC \主\的java \有机\ geotools \ XML \ ComplexBinding.java:[21,24]   包org.picocontainer不存在

如果我改变了pom.xml依赖性 - 它失败了某种“无法解析捆绑”。

该项目非常庞大,捆绑和子/父母的数量。所以我不能在这里发布所有这些内容。 所以我的问题是:这种麻烦的可能原因是什么?它可能是父/子之间的依赖冲突吗?

5 个答案:

答案 0 :(得分:6)

我可以看到两件事要尝试解决它。​​

首先,如果你进入你当地的.m2仓库,你会看到是否有其他版本的lib(但是,有时不同的版本可以有不同的名称,因此存储在不同的文件夹中,而不是帮助)

您还可以在IDE或命令行(mvn dependency:tree)中检查所使用的ACTUAL依赖项是什么。 您可能必须排除某些传递依赖项以保持一致。我使用Eclipse插件。

最后,当你确定你使用的依赖关系时,你可以打开jar,看看你期望的是否存在。

答案 1 :(得分:2)

嗯,实际原因是目标计算机具有受限制的互联网访问权限,因此限制访问maven repos。有一些黑魔法它没有失败与某种'无法下载工件'(可能是因为手动安装了一些jar文件)。 所以我们让服务器具有正常访问权限,将其设置为镜像,配置我们的maven以使用镜像并解决了问题。 感谢@Samuel参与我的问题,但我可以看到无法从问题描述中确定问题。

答案 2 :(得分:1)

我也有同样的问题。在我的情况下,模块中的所有类都在测试包中(这是Selenium项目),并且依赖项设置为可编译。我最终将一些类移至主程序包。

答案 3 :(得分:0)

我遇到了同样的问题。我的问题是依赖被设置为测试。所以当我发出exec:java时,它找不到类,因为它超出了范围。

答案 4 :(得分:0)

我已经使用Eclipse解决了这个问题。当您在项目中展开“ Maven依赖项”文件夹并尝试找到要引用的特定jar时,可以发现此问题。该jar可能以文件夹的形式出现,但不是实际的jar。被引用的项目是在Eclipse平台中打开的,因此Maven不会在存储库中查找以获取该jar。

解决方案是从Eclipse解决方案空间中删除引用的jar的项目并重建。有用!