2013-05-06 50 views
1

我有一个项目,其中包括Apache Pivot和Neo4j。我的项目编译并运行。当我尝试添加Neo4j/Spatial时:添加neo4j-spatial dependency导致错误

<dependency> 
    <groupId>org.neo4j</groupId> 
    <artifactId>neo4j-spatial</artifactId> 
    <version>0.11-SNAPSHOT</version> 
</dependency> 

项目编译但不会运行。编译器源的误差在BXML文件之一:

org.apache.pivot.serialization.SerializationException: java.util.ServiceConfigurationError: javax.imageio.spi.ImageOutputStreamSpi: Provider com.sun.media.imageioimpl.stream.ChannelImageOutputStreamSpi could not be instantiated: java.lang.IllegalArgumentException: vendorName == null! 

我不明白如何添加依赖在运行时可以打破该项目。我没有更改任何代码。我会发布任何需要的代码。

UPDATE:我试过以前的稳定版本,结果相同。此外,我已将“供应商”和版本信息添加到我的jar清单中,似乎修复了vendorName == null错误,并导致项目在关闭而不是打开时挂起。但是我想在这里重述的问题是一样的。

如何在不更改代码的情况下添加依赖项会导致正常运行的项目在运行时失败?我不明白添加依赖项如何改变执行,如果我不叫它。

+0

最新的稳定版本(0.10.1)也会发生吗? – tstorms 2013-05-06 06:36:49

+0

不,我在哪里可以得到?我从克隆git代表得到了0.11-SNAPSHOT。 – 2013-05-06 12:37:41

+1

检查http://m2.neo4j.org/content/repositories/releases/org/neo4j/neo4j-spatial/。您可以将存储库添加到您的maven存储库列表。 – tstorms 2013-05-06 12:40:27

回答

0

版本控制可能存在问题。如果你添加一个依赖关系,并且你拥有另一个具有相同依赖但不同版本的库,Maven的通常行为是导入最新版本,偶尔会打破依赖于旧版本的代码到一个改变的界面或其他。因此,如果A取决于B v1,而C取决于Bv2,那么当您添加C时,它会在有效的POM中用Bv2覆盖Bv1,理论上可能会破坏Bv1。

我相信有一种解决方法,但我不是Maven的专家。所以当你导入新的东西时,检查你的有效POM是否适用于版本的变化。