Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java应用程序引擎-使用适当的库验证JSON模式_Java_Maven_Validation_Google App Engine_Jsonschema - Fatal编程技术网

Java应用程序引擎-使用适当的库验证JSON模式

Java应用程序引擎-使用适当的库验证JSON模式,java,maven,validation,google-app-engine,jsonschema,Java,Maven,Validation,Google App Engine,Jsonschema,我正在寻找一个有效的JsonSchema验证库,它可以与AppEngineJava环境一起工作 我发现了3个不同的库,但没有一个因为不同的原因而可用 第一名: 问题是: 它使用了一个旧版本的Guava(Guava 13.0.1),我不能使用它,因为我的主要项目使用的是版本19,但更重要的是,我使用的是版本13中还不存在的更新的Guava方法 java.lang.NoSuchMethodError: com.google.common.collect.FluentIterable.toImmuta

我正在寻找一个有效的JsonSchema验证库,它可以与AppEngineJava环境一起工作

我发现了3个不同的库,但没有一个因为不同的原因而可用

第一名:

问题是: 它使用了一个旧版本的Guava(Guava 13.0.1),我不能使用它,因为我的主要项目使用的是版本19,但更重要的是,我使用的是版本13中还不存在的更新的Guava方法

java.lang.NoSuchMethodError: com.google.common.collect.FluentIterable.toImmutableSet()Lcom/google/common/collect/ImmutableSet;
    at org.eel.kitchen.jsonschema.syntax.draftv4.DraftV4TypeSyntaxChecker.<clinit>(DraftV4TypeSyntaxChecker.java:43)
问题:这个库只针对Java8编译,而Java8不适用于AppEngine环境

java.lang.UnsupportedClassVersionError: org/everit/json/schema/loader/SchemaLoader : Unsupported major.minor version 52.0

第三名:

问题在于:Jackson似乎使用了多线程方式来执行代码,如果不通过GAE ThreadManager声明,应用程序内引擎将被禁止

java.io.IOException: java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "modifyThreadGroup")
我没有找到这个库的其他Java实现,我所有的尝试都没有成功。我工作的唯一方法是使用Guava 13的第一个解决方案(我禁用了我的代码,它使用较新的Guava函数,用自定义代码重写了功能)

最后。。。问题是:除了我已经展示的可能与AppEngine一起工作的库之外,还有其他库吗? 如果可能的话,我希望避免下载Java8库并将其重新编译为7版本,甚至更新第一个库Guava依赖项

我希望避免下载Java8库并重新编译它7

@rduilhe创建了everit库的后端口,该库在java6上编译。您可以在本地编译它,尽管它是早期版本的端口:


(免责声明:我是everit org/json模式的作者)

我克隆了您给我的存储库,但代码包含lamba函数,因此很明显,这仍然是Java8代码。是1.1.0版本的Java6吗?repo有一个分支称为“Java6兼容”,尝试使用它代替masterThank you,找到并下载相关代码,为我的本地Maven存储库配置,然后部署。一切都完成了,一切正常。
<dependency>
    <groupId>org.everit.json</groupId>
    <artifactId>org.everit.json.schema</artifactId>
    <version>1.3.0</version>
</dependency>
try (InputStream inputStream =  Validator.class.getResourceAsStream("schema.json")) {
    JSONObject rawSchema = new JSONObject(new JSONTokener(inputStream));
    Schema schema = SchemaLoader.load(rawSchema);
    schema.validate(new JSONObject(input)); // throws a ValidationException if this object is invalid
}
java.lang.UnsupportedClassVersionError: org/everit/json/schema/loader/SchemaLoader : Unsupported major.minor version 52.0
<dependency>
    <groupId>com.github.fge</groupId>
    <artifactId>json-schema-validator</artifactId>
    <version>2.2.6</version>
</dependency>
JsonNode schema = JsonLoader.fromURL(HelloAppEngine.class.getResource("schema.json"));
JsonNode json = JsonLoader.fromURL(HelloAppEngine.class.getResource("json.json"));

JsonSchema jsonSchema = JsonSchemaFactory.byDefault().getJsonSchema(schema);
ProcessingReport report = jsonSchema.validate(json);

if (!report.isSuccess()) {
    // throw error;
}
java.io.IOException: java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "modifyThreadGroup")