これは次と同じエラーです: Getting java.lang.NoSuchFieldError: VALUE in RamlValidationService
ただし、その場合、deps に Maven を使用していないことが問題でしたが、私はそうしています。
私の単純な RAML ファイル:
/echo:
/{str}:
uriParameters:
str:
type: string
get:
displayName: Used to retrieve a specific page
responses:
200:
displayName: Page returned successfully
404:
displayName: Page not found
私の単純な Java の使用法:
File apiDir = new File("api");
File[] directoryListing = apiDir.listFiles();
if (directoryListing != null) {
for (File child : directoryListing) {
RamlDocumentBuilder rdb = new RamlDocumentBuilder();
System.out.println("________ child.getAbsolutePath(): "
+ child.getAbsolutePath());
if (child != null) {
try {
Raml raml = rdb.build(new FileReader(child));
} catch (FileNotFoundException fnfe){
throw new RuntimeException("Problem with raml file: ", fnfe);
}
} else {
System.out.println("Ignoring file: " + child);
}
}
} else {
throw new RuntimeException("api directory is not a directory.");
}
私の単純なpom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>my.group</groupId>
<artifactId>my-project</artifactId>
<version>0.0.1</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<compilerVersion>1.8</compilerVersion>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.sparkjava</groupId>
<artifactId>spark-core</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>io.fastjson</groupId>
<artifactId>boon</artifactId>
<version>0.33</version>
</dependency>
<dependency>
<groupId>com.squareup</groupId>
<artifactId>javapoet</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>org.raml</groupId>
<artifactId>raml-parser</artifactId>
<version>0.8.11</version>
</dependency>
</dependencies>
</project>
そして、ここに楽しいエラーがあります:
Exception in thread "main" java.lang.NoSuchFieldError: VALUE
at org.raml.parser.utils.NodeUtils.<clinit>(NodeUtils.java:34)
at org.raml.parser.visitor.NodeVisitor.resolveTag(NodeVisitor.java:164)
at org.raml.parser.visitor.NodeVisitor.doVisitMappingNode(NodeVisitor.java:139)
at org.raml.parser.visitor.NodeVisitor.visitDocument(NodeVisitor.java:209)
at org.raml.parser.visitor.YamlDocumentBuilder.build(YamlDocumentBuilder.java:90)
at org.raml.parser.visitor.YamlDocumentBuilder.build(YamlDocumentBuilder.java:113)
at my.group.App.main(App.java:27)
編集 1: そのまま SnakeYAML を使用すれば、すべて問題ありません。