我们有一个要求,我们必须使用json模式动态生成Java pojo类。 到目前为止,我们已经能够即时生成类(jsonschema2pojo库),但是无法编译该类以进行进一步处理。 对于编译,classloader应该获取该类,但是随着java类的动态生成,class loader无法获取它并抛出InvocationTargetException。 有什么办法可以像使用某些Maven插件一样以其他方式再次编译Java包?
谢谢
Vaishali Mangwani
答案 0 :(得分:0)
如果您正在使用Maven,则可以配置插件。 https://joelittlejohn.github.io/jsonschema2pojo/site/1.0.1/generate-mojo.html。
这将建立您的POJO。
例如在“ pom.xml”中,我们正在使用:
<plugins>
<plugin>
<groupId>org.jsonschema2pojo</groupId>
<artifactId>jsonschema2pojo-maven-plugin</artifactId>
<version>1.0.0-alpha4</version>
<configuration>
<sourceDirectory>${basedir}/schemas</sourceDirectory>
<outputDirectory>${basedir}/src/main/java</outputDirectory>
<targetPackage>com.package</targetPackage>
<useCommonsLang3>true</useCommonsLang3>
<includeAdditionalProperties>false</includeAdditionalProperties>
<includeConstructors>true</includeConstructors>
<useLongIntegers>true</useLongIntegers>
<inclusionLevel>ALWAYS</inclusionLevel>
<generateBuilders>true</generateBuilders>
<includes>
<include>**/*.json</include>
</includes>
</configuration>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
...
</plugin>
</plugins>
在我们的案例中,我们将POJO作为单独的包/库,因此可以在项目之间共享。
如果您需要运行时编译,则可以使用https://github.com/OpenHFT/Java-Runtime-Compiler之类的工具,但这会涉及更多问题,并且从外观上看,这对您而言没有意义。