语言工具示例:java.lang.NoSuchMethodError:org.apache.xerces.impl.xs.XMLSchemaLoader.loadGrammar

时间:2014-09-18 08:24:42

标签: java maven languagetool

错误消息java.lang.NoSuchMethodError:org.apache.xerces.impl.xs.XMLSchemaLoader.loadGrammar 当我尝试从

运行示例时显示

http://wiki.languagetool.org/java-api

JLanguageTool langTool = new JLanguageTool(new BritishEnglish());
langTool.activateDefaultPatternRules();
List<RuleMatch> matches = langTool.check("A sentence " +
    "with a error in the Hitchhiker's Guide tot he Galaxy");

for (RuleMatch match : matches) {
  System.out.println("Potential error at line " +
      match.getLine() + ", column " +
      match.getColumn() + ": " + match.getMessage());
  System.out.println("Suggested correction: " +
      match.getSuggestedReplacements());
}

提供的解决方案: java.lang.NoSuchMethodError: org.apache.xerces.impl.xs.XMLSchemaLoader.loadGrammar

意味着在LanguageTools依赖项中指定的Xerces将是造成麻烦的那个。

mvn dependency:tree | grep -i xerces

没有显示任何结果,并且在Languagetools中,pom.xml显式排除了Xerces。

我自己的测试项目具有以下xerces依赖项:

mvn dependency:tree | grep -i xerces
[INFO] |  |  |  |  +- org.bluestemsoftware.open.maven.tparty:xerces-impl:jar:2.9.0:compile
[INFO] |  |  |  |  \- xerces:xercesImpl:jar:2.6.2:compile

我假设我已经摆脱了其中一个依赖项,更改了依赖项的顺序或为LanguageTool添加了正确的xerces依赖项。什么是正确的方法 - 其中一个或其他什么?

1 个答案:

答案 0 :(得分:1)

根据oracle文档,此错误是

如果应用程序试图调用类的指定方法(静态或实例),并且该类不再具有该方法的定义,则抛出该异常。 通常,编译器会捕获此错误;如果类的定义发生不兼容的更改,则此错误只能在运行时发生。