我想创建一个RAML验证器,该验证器将获取RAML URLs返回验证结果。为此,我使用raml-java-parser。根据其自述文件,我尝试执行以下代码行:

String sourceUrl = "http://api.apihub.com/onpositive/api/espn-raml-api/espn.raml";
List<ValidationResult> results = RamlValidationService.createDefault().validate(sourceUrl);


并得到以下错误信息:

java.lang.NoSuchFieldError: VALUE


为什么我收到此错误?在此之前,我得到了一些未找到异常的类,因此我在jar库下面手动应用了。

> juniversalchardet_1.0.3_1.0.0.jar
> raml_parser_0.8.11_1.0.0.jar
> rhino_1.7R4_1.0.0.jar
> snakeyaml-1.16.jar
> jackson_databind_2.4.4_1.0.0.jar


我也尝试过下面的东西。 inputStream是我通过ByteArrayInputStream解析的RAML内容。但是this并不是无效的RAML,因此我可能做错了。

java - 在RamlValidationService中获取java.lang.NoSuchFieldError:VALUE-LMLPHP
java - 在RamlValidationService中获取java.lang.NoSuchFieldError:VALUE-LMLPHP

最佳答案

没看过这个错误。我怀疑您可能仍然会错过依赖关系。

确实,Java RAML解析器has more dependencies比您手动添加的这几个JAR还要多。您在pom中看到的依赖项只是冰山一角,还有大量的传递性依赖项。

因此:为您的项目使用适当的依赖项管理器(例如Maven)。它将为您带来所有依赖项(直接和传递)。此外,除非这是一个玩具项目,否则您将始终需要适当的构建工具。

10-06 09:36