首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAXON - XPST0017:无法找到匹配的1-参数函数

SAXON - XPST0017:无法找到匹配的1-参数函数
EN

Stack Overflow用户
提问于 2018-08-22 09:10:36
回答 1查看 2K关注 0票数 0

我有一个简单的jar测试程序,用于用xquery文件解析xml。问题是,在xquery文件中,我声明了一个java命名空间:

代码语言:javascript
复制
declare namespace java="java:MyString";

然后,为了测试的目的,我只有一个静态方法toString(对象o)。

当我在Eclipse之外执行它时(当我手动设置类文件夹时,他正确地管理了类路径),我得到标题中的错误:

代码语言:javascript
复制
> C:\>java -jar XQueryJava.jar
> -xq XQuery\test.xq -xml XQuery\test.xml Error on line 9 of XQuery\test.xml:   XPST0017: Cannot find a matching 1-argument
> function named {java:MyString}toString() ; SystemID: XQuery\test.xml;
> Line#: 9; Column#: -1 net.sf.saxon.trans.StaticError: Cannot find a
> matching 1-argument function named {java:MyString}toString()
>         at net.sf.saxon.query.UnboundFunctionLibrary.bindUnboundFunctionCalls(UnboundFunctionLibrary.java:114)
>         at net.sf.saxon.query.StaticQueryContext.bindUnboundFunctionCalls(StaticQueryContext.java:1479)
>         at net.sf.saxon.query.QueryParser.makeXQueryExpression(QueryParser.java:106)
>         at net.sf.saxon.query.StaticQueryContext.compileQuery(StaticQueryContext.java:472)
>         at net.sf.saxon.query.StaticQueryContext.compileQuery(StaticQueryContext.java:502)
>         at xpath.AffichageXPath.execute(AffichageXPath.java:91)
>         at xpath.AffichageXPath.main(AffichageXPath.java:49)

我尝试使用"-cp“并将.class文件放入文件夹中:

代码语言:javascript
复制
java --class-path XQuery\class -jar XQueryJava.jar -xq XQuery\test.xq -xml XQuery\test.xml

但还是同样的问题。

如果我将类文件与jar放在同一个文件夹中,那么一切都很好。为什么它不适用于CP论点?我以为这是重点..。

知道吗?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-22 09:23:50

首先,堆栈跟踪显示您正在用

代码语言:javascript
复制
net.sf.saxon.query.StaticQueryContext.compileQuery

这是一个相当低的入门点,在这个层次上有很多错误的方法。我建议您使用s9api接口(XQueryCompiler.compile())。

在没有启用Saxon/EE的情况下,您很容易出错。对自反扩展函数的调用至少需要Saxon,这也需要一个许可文件。检查撒克逊配置是否为ProfessionalConfiguration或EnterpriseConfiguration。

在命令行上使用-TJ选项,或者在API (FeatureKeys.TRACE_EXTERNAL_FUNCTIONS)中使用等效的配置属性,就可以更好地诊断为什么它找不到函数。

最后,请注意,在Java命令行上使用-jar意味着类路径被忽略:所有东西都必须从JAR文件本身加载。这使得获取许可证文件和任何外部库类变得相当困难,因此最好避免。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51963424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档