qemu-java
qemu-java copied to clipboard
"generate build" falls with JSON parsing error
Launching "generate build" falls with JSON parsing error:
C:\Temp\qemu-java-master>gradlew generate build
:qemu-qapi:compileGenerateJava
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
:qemu-qapi:processGenerateResources
:qemu-qapi:generateClasses
:qemu-qapi:generate
Exception in thread "main" com.google.gson.JsonSyntaxException: Failed to parse {"enum":"BlockdevAioOptions","data":["threads","native",{"name":"io_uring","if":
"defined(CONFIG_LINUX_IO_URING)"}]}
at org.anarres.qemu.qapi.generator.SchemaParser.parse(SchemaParser.java:118)
at org.anarres.qemu.qapi.generator.Main.main(Main.java:43)
Caused by: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected STRING but was BEGIN_OBJECT
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:200)
at com.google.gson.TypeAdapter.fromJsonTree(TypeAdapter.java:281)
at org.anarres.qemu.qapi.generator.SchemaParser.parse(SchemaParser.java:116)
... 1 more
Caused by: java.lang.IllegalStateException: Expected STRING but was BEGIN_OBJECT
at com.google.gson.internal.bind.JsonTreeReader.nextString(JsonTreeReader.java:154)
at com.google.gson.internal.bind.TypeAdapters$13.read(TypeAdapters.java:358)
at com.google.gson.internal.bind.TypeAdapters$13.read(TypeAdapters.java:346)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:40)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:81)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:60)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:103)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:196)
... 3 more
:qemu-qapi:generate FAILED
FAILURE: Build failed with an exception.
If I am not mistaken, nested objects parsing is not supported yet? Is it difficult to add this feature? Thanks a lot.
A few days ago, the error message is slightly changed:
C:\Temp\qemu-java-master>gradlew generate build
:qemu-qapi:compileGenerateJava UP-TO-DATE
:qemu-qapi:processGenerateResources UP-TO-DATE
:qemu-qapi:generateClasses UP-TO-DATE
:qemu-qapi:generate
Exception in thread "main" com.google.gson.JsonSyntaxException: Failed to parse {"enum":"MultiFDCompression","data":["none","zlib",{"name":"zstd","if":"defined(
CONFIG_ZSTD)"}]}:qemu-qapi:generate
at org.anarres.qemu.qapi.generator.SchemaParser.parse(SchemaParser.java:118)
at org.anarres.qemu.qapi.generator.Main.main(Main.java:43)
Caused by: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected STRING but was BEGIN_OBJECT
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:200)
at com.google.gson.TypeAdapter.fromJsonTree(TypeAdapter.java:281)
at org.anarres.qemu.qapi.generator.SchemaParser.parse(SchemaParser.java:116)
... 1 more
Caused by: java.lang.IllegalStateException: Expected STRING but was BEGIN_OBJECT
at com.google.gson.internal.bind.JsonTreeReader.nextString(JsonTreeReader.java:154)
at com.google.gson.internal.bind.TypeAdapters$13.read(TypeAdapters.java:358)
at com.google.gson.internal.bind.TypeAdapters$13.read(TypeAdapters.java:346)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:40)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:81)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:60)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:103)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:196)
... 3 more
:qemu-qapi:generate FAILED
FAILURE: Build failed with an exception.
As I understand it, something like https://github.com/wnameless/json-flattener should be used when parsing. Can anybody help in implementation? I would be very grateful.