gpt4 book ai didi

java - 使用 XSAttributeUse.getValueConstraintValue() 时,Apache Xerces 抛出 java.lang.NoSuchMethodError

转载 作者:行者123 更新时间:2023-12-02 02:57:48 25 4
gpt4 key购买 nike

我的任务是提取给定复杂类型中每个可选属性的(名称,默认值)对。我有以下代码:

XSObjectList attrList = typeDefinition.getAttributeUses();
for (int i = 0; i < attrList.getLength(); i++) {
XSAttributeUse attributeUse = (XSAttributeUse) attrList.item(i);

if (!attributeUse.getRequired()) {
String name = attributeUse.getValueConstraintValue().getNormalizedValue();
String value = /* extracting the default value */;
}
}

这会产生错误:

Exception in thread "main" java.lang.NoSuchMethodError: org/apache/xerces/xs/XSAttributeUse.getValueConstraintValue()Lorg/apache/xerces/xs/XSValue; (loaded from path\to\sdk\jre\lib\xml.jar by <Bootstrap Loader>) called from class my.package.xsd.XSDParser (loaded from file:/path/to/the/project/SwidSigner/target/classes/ by sun.misc.Launcher$AppClassLoader@29b444c2).
at my.package.xsd.XSDParser.getTypeAttributes(XSDParser.java:54)
at my.package.xsd.XSDParser.getAttributes(XSDParser.java:37)
at my.package.Main.main(Main.java:29)

更重要的是,当我将其更改为:

XSObjectList attrList = typeDefinition.getAttributeUses();
for (int i = 0; i < attrList.getLength(); i++) {
XSAttributeUse attributeUse = (XSAttributeUse) attrList.item(i);
XSAttributeDeclaration attributeDecl = attributeUse.getAttrDeclaration();

if (!attributeUse.getRequired()) {
String name = attributeDecl.getValueConstraintValue().getNormalizedValue();
String value = /* extracting the default value */;
}
}

错误仍然发生,但它提示 XSAttributeDeclaration 类。使用其他方法时没有报错,比如

XSComplexTypeDefinition.getAttributeUses()

我正在使用 Maven 导入 Xerces:

<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.11.0</version>
</dependency>

最佳答案

您有一个流氓 jar,其中包含 Xerces 类。

检查已安装的 JRE 的 lib 目录。看起来它正在从名为 xml.jar 的 jar 中加载相关类。我不确定这个 jar 来自哪里,因为我在当前使用的任何 Java 安装中都没有看到它(Linux 和 OSX 上的 Java 8)。

如果您删除(或移动)此 jar,问题应该得到解决。请注意,这可能会对系统上的其他 Java 程序产生意想不到的后果。

关于java - 使用 XSAttributeUse.getValueConstraintValue() 时,Apache Xerces 抛出 java.lang.NoSuchMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42832944/

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