gpt4 book ai didi

java - saxon-xpath-9.1.0.8.jar!/META-INF/services/javax.xml.xpath.XPathFactory :2: Illegal configuration-file syntax

转载 作者:行者123 更新时间:2023-11-30 05:36:21 26 4
gpt4 key购买 nike

在我的 Web 应用程序中将 Java 7 升级到 Java 8 时,我遇到了 Saxon 问题:

javax.xml.xpath.XPathFactoryConfigurationException: java.util.ServiceConfigurationError: javax.xml.xpath.XPathFactory: jar:file:/C:/Users/abc/.m2/repository /net/sf/saxon/saxon-xpath/9.1.0.8/saxon-xpath-9.1.0.8.jar!/META-INF/services/javax.xml.xpath.XPathFactory:2: Illegal configuration-file syntax at java.util.ServiceLoader.fail(ServiceLoader.java:239) at java.util.ServiceLoader.fail(ServiceLoader.java:245) at java.util.ServiceLoader.parseLine(ServiceLoader.java:265) at java.util.ServiceLoader.parse(ServiceLoader.java:307) at java.util.ServiceLoader.access$200(ServiceLoader.java:185) at java.util.ServiceLoader$LazyIterator.hasNextService(ServiceLoader.java:357) at java.util.ServiceLoader$LazyIterator.hasNext(ServiceLoader.java:393) at java.util.ServiceLoader$1.hasNext(ServiceLoader.java:474) at javax.xml.xpath.XPathFactoryFinder$2.run(XPathFactoryFinder.java:345) at javax.xml.xpath.XPathFactoryFinder$2.run(XPathFactoryFinder.java:341) at java.security.AccessController.doPrivileged(Native Method) at javax.xml.xpath.XPathFactoryFinder.findServiceProvider(XPathFactoryFinder.java:341) at javax.xml.xpath.XPathFactoryFinder._newFactory(XPathFactoryFinder.java:212) at javax.xml.xpath.XPathFactoryFinder.newFactory(XPathFactoryFinder.java:137) at javax.xml.xpath.XPathFactory.newInstance(XPathFactory.java:190)

我将 saxon 升级到 Saxon HE,但它不起作用:

Q{java:org.apache.commons.lang3.StringUtils}isBlank(). Reflexive calls to Java methods are not available under Saxon-HE

at net.sf.saxon.style.StylesheetModule.loadStylesheet(StylesheetModule.java:261) at net.sf.saxon.style.Compilation.compileSingletonPackage(Compilation.java:107) at net.sf.saxon.s9api.XsltCompiler.compile(XsltCompiler.java:785) at net.sf.saxon.jaxp.SaxonTransformerFactory.newTemplates(SaxonTransformerFactory.java:149)

转向获得许可的 Saxon PE 或其他是不可能的:/

我不知道为什么,但应用程序像这样使用 XpathFactory:

XPath xpath = XPathFactory.newInstance(NamespaceConstant.OBJECT_MODEL_SAXON).newXPath();

我不知道为什么选择这个对象模型,而不是 OBJECT_MODEL_DOM4J

我想知道是否:

1) 有一些免费的商业用途 saxon 可以在 Java 8 中工作吗?我不必是最新的,我们使用的是 9.1.0.8 或 9.1.0.6J。

2) 这个 NamespaceConstant.OBJECT_MODEL_SAXON 是什么,是否可以从 Saxon 辞职并转移到 OBJECT_MODEL_DOM4J 并使用 dom4j 代替,或者也许还有其他方法可以使用免费库来实现类似的东西?

XPath xpath = XPathFactory.newInstance(NamespaceConstant.OBJECT_MODEL_SAXON).newXPath();
xpath.setNamespaceContext(new NamespaceContextMap("a12i", "http://my-application/a12"));
return xpath.compile(MY_XPATH_QUERY);

最佳答案

您可以在此处找到有关此问题的信息

Syntax error in javax.xml.xpath.XPathFactory provider-configuration file of Saxon-HE 9.3

以及从那里引用的各种线程。其本质是 Saxon 的早期版本使用了一种在 Java 5 中有效的服务文件格式(支持 XPathFactory JAXP 搜索机制),但在后续的 Java 版本中不起作用(Saxon 无意中依赖于 Java 中的一个 bug,随后已修复)。

正如您所指出的,从 Saxon-B (9.1) 迁移到 Saxon-HE 可能会出现问题,因为某些功能,特别是自反扩展功能,没有得到保留。但是,有其他方法可以在以后的版本中实现相同的效果,而不会出现与自反扩展函数相关的安全问题。

如果您想坚持使用 Saxon-B (9.1),您可以通过更改 XPathFactory.newInstance() 上的调用以直接实例化 Saxon XPathFactory 来使其在较新的 Java 版本上工作。对象模型的选择与问题无关。

关于java - saxon-xpath-9.1.0.8.jar!/META-INF/services/javax.xml.xpath.XPathFactory :2: Illegal configuration-file syntax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56527808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com