我有一个项目,其中包括Apache和Neo4j。我的项目编译并运行。当我尝试添加Neo4j/Spatial时:
<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 ==空错误,并导致项目挂起关闭而不是打开。但我的问题,我将在这里重新表述,是一样的。
在不改变代码的情况下,添加依赖项如何导致运行时运行的项目失败?我不明白如果不调用依赖项,添加依赖项将如何改变执行过程。
发布于 2014-05-27 16:09:19
版本控制可能会出现问题。如果您添加了一个依赖项,并且您有另一个库具有相同的依赖项但版本不同,则Maven的通常行为是导入最新版本,偶尔也会因为更改的接口或其他原因而破坏依赖于旧版本的代码。
因此,如果A依赖于B v1,C依赖于Bv2,那么当您添加C时,它在有效POM中用Bv2覆盖Bv1,理论上这可能会破坏它。
我确信有办法解决这个问题,但我不是Maven的专家。因此,在导入新东西时,请检查有效POM对版本的更改。
https://stackoverflow.com/questions/16390479
复制相似问题