在 shell 中运行 Saxon 以执行 XQuery 导致线程“main”中出现异常 java.lang.NoClassDefFoundError: org/xmlresolver/Resolver

问题描述 投票:0回答:1

关注这个答案

cat xquery.txt
declare namespace w = "http://schemas.openxmlformats.org/wordprocessingml/2006/main";
copy $input := doc("/tmp/file.xml")
modify delete node $input//w:rPr
return $input

输入文件

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
    <w:lvl w:ilvl="0">
      <w:rPr>
          TO REMOVE
      </w:rPr>
      <w:rPx>
        <w:rFonts w:ascii="Symbol" w:hAnsi="Symbol" w:hint="default"/>
      </w:rPx>
    </w:lvl>
</root>
$ java -cp "/path/to/lib/saxon-he-11.4.jar" net.sf.saxon.Query -qversion:3.1 -q:xquery.txt 
Exception in thread "main" java.lang.NoClassDefFoundError: org/xmlresolver/Resolver
    at net.sf.saxon.lib.CatalogResourceResolver.<init>(CatalogResourceResolver.java:46)
    at net.sf.saxon.Configuration.init(Configuration.java:367)
    at net.sf.saxon.Configuration.<init>(Configuration.java:230)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at java.base/java.lang.Class.newInstance(Class.java:584)
    at net.sf.saxon.Configuration.newConfiguration(Configuration.java:246)
    at net.sf.saxon.Query.doQuery(Query.java:265)
    at net.sf.saxon.Query.main(Query.java:103)
Caused by: java.lang.ClassNotFoundException: org.xmlresolver.Resolver
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    ... 11 more

来自doc

-q:input

旧版本的另一个尝试:

$ java -cp "/path/to/lib/saxon9he.jar" net.sf.saxon.Query -qversion:3.0 -q:xquery.txt
Error on line 2 column 1 of xquery.txt:
  XPST0003 XQuery syntax error near #...rocessingml/2006/main"; copy $#:
    Unexpected token "copy" in path expression
Static error(s) in query
xml xquery saxon
1个回答
1
投票

基于 Saxon Home Edition (HE) 文档,它仅支持 XQuery 3.1 最小一致性。它不包括以下内容:

未提供的可选功能:XQuery 3.1 Schema Aware、XQuery 3.1 类型化数据、XQuery 3.1 静态类型、XQuery 更新 1.0

你需要 XQuery Update 支持你的任务。

供参考:SaxonJ-HE(家庭版)产品说明

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.