10

在自定义 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\modules\extension\xsd\xsd-core\src\main\java\org\geotools\xs\bindings\XSGroupBinding.java:[19,24] 包 org.picocon 容器不存在

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

...\geotools-osgi\modules\extension\xsd\xsd-core\src\main\java\org\geotools\xml\ComplexBinding.java:[21,24] 包 org.picocontainer 不存在

如果我更改 pom.xml 依赖项 - 它会因某种“无法解析捆绑”而失败。

该项目非常大,捆绑包和子/父 pom 的数量。所以我不能把它们都发在这里。所以我的问题是:这种麻烦的可能原因是什么?这可能是父/子之间的依赖冲突吗?

4

5 回答 5

7

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

首先,如果您进入本地 .m2 存储库,您将查看是否有其他版本的 lib(但是,有时不同的版本可以有不同的名称,因此存储在不同的文件夹中,这无济于事)

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

最后,当您确定所使用的依赖项时,您可以打开 jar 并查看您期望的内容是否存在。

于 2012-04-12T12:35:29.320 回答
2

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

于 2012-05-08T10:52:19.027 回答
1

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

于 2018-08-08T10:13:23.527 回答
0

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

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

于 2020-02-23T04:45:33.100 回答
0

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

于 2017-09-09T11:43:35.113 回答