我想知道是否有人熟悉stax-api,尤其是stax2-api。
我的申请表中有一种奇怪的行为。
我的应用程序A依赖于Java.xml.stream:stax-1.0-2
然而,只要我将org.codehaus.woodstox:stax2-api放入我的依赖项中,即使还没有使用它,应用程序也会切换到使用stax2-api。
Stax2-api如下所示:github:
Stax2 API是通过遵循Stax XML本机实现的 实现:
Woodstox Aalto此外,Stax2 API包含包装器实现 可用于支持常规Stax上的大多数API 像Sun SJSXP这样的实现(捆绑了默认的Stax实现) 使用JDK 1.6和1.7)。
API类位于org.codehaus.stax2包中。
Stax2 API also contains partial Reference Implementation of many of API classes, under org.codehaus.stax2.ri: intention is to make it as painless as possible for Java Stax parser to implement full Stax2 support.
<dependency>
<groupId>org.codehaus.woodstox</groupId>
<artifactId>stax2-api</artifactId>
<version>3.1.2</version>
</dependency>
stax2的依赖关系如下:
<dependencies>
<!-- Since baseline with 4.0 is Java5, we still need to officially keep this in;
should drop once we go up to Java6 or 7
-->
<dependency>
<groupId>javax.xml.stream</groupId>
<artifactId>stax-api</artifactId>
<version>1.0-2</version>
<!-- at this point, with inclusion in JDK 1.6, this should be given -->
<scope>provided</scope>
</dependency>
</dependencies>
应该注意的是,我的应用程序A在 Java.xml.stream:stax-1.0-2。
的原始依赖性方面效果很好。知道为什么使用stax2而不是stax。
答案 0 :(得分:1)
这个问题没有任何意义:stax2-api
只是实现可能选择实现的API扩展。它没有任何其他权力;不会自动注册任何内容。
你可能会在classpath中包含任何Stax实现会导致添加SPI(META-INF / services /),这可能会改变加载的实际Stax实现,除非你指定了你想要的实现(比如当打电话给XMLInputFactory.newFactory()
)。
但这与Stax2 API jar无关。