获取 java.lang.NoSuchFieldError: RamlValidationService 中的值
Posted
技术标签:
【中文标题】获取 java.lang.NoSuchFieldError: RamlValidationService 中的值【英文标题】:Getting java.lang.NoSuchFieldError: VALUE in RamlValidationService 【发布时间】:2015-11-30 21:22:51 【问题描述】:我想创建一个 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,因此我可能做错了什么。
【问题讨论】:
【参考方案1】:从未见过此错误。我怀疑您可能仍然会错过依赖项。
确实,Java RAML 解析器has more dependencies 比您手动添加的这几个 JAR。你在pom
中看到的依赖关系只是冰山一角,还有大量的传递依赖关系。
所以:为您的项目使用适当的依赖管理器(如 Maven)。它将负责为您带来所有依赖项(直接和传递)。此外,除非这是一个玩具项目,否则无论如何您都需要一个合适的构建工具。
【讨论】:
谢谢@david,可以使用 RAML 的 URL 吗?示例:sourceUrl = "api.apihub.com/onpositive/api/espn-raml-api/espn.raml"; 是的,可以通过 HTTP 加载远程 RAML。以上是关于获取 java.lang.NoSuchFieldError: RamlValidationService 中的值的主要内容,如果未能解决你的问题,请参考以下文章