我们试图避免在一个使用Java和Python的项目中出现重复代码。代码库的大部分是用Java编写的,由于机器学习环境的流行,现在添加了Python。在
在绿色领域场景中,我们将从swagger或protobuf之类的东西开始,并从生成的代码中派生模型。但现在不行了。在
J类用一些注释进行了注释,它们面向java8。在
在研究过程中,我发现了以下可能的方法,可以将类的结构(没有方法)转换为Python类结构:
另外一个好处是:在我们的项目中,这两种语言实际上是通过XML进行通信的,因此模式文件对其他用例很有帮助。我们使用maven来构建Java,因此将其包含在maven进程中是很好的。在
我把这个包括在pom.xml文件公司名称:
<!-- https://mvnrepository.com/artifact/org.codehaus.mojo/jaxb2-maven-plugin -->
<dependency>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>2.3.1</version>
</dependency>
以及默认的插件配置
^{pr2}$但我有个错误
[ERROR] Failed to execute goal org.codehaus.mojo:jaxb2-maven-plugin:2.3.1:schemagen (default-cli) on project common: JAXB errors arose while SchemaGen compiled sources to XML. -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:jaxb2-maven-plugin:2.3.1:schemagen (default-cli) on project common: JAXB errors arose while SchemaGen compiled sources to XML.
然后,我研究了JSON模式作为中介,但这并不能真正切断它,因为从JSON模式创建Python类源代码并不容易。在
那么有没有办法从Java代码中生成简单的“Pojo”Python类呢?没有方法,没有复杂的交叉编译,只有一个简单的结构转换。我可以从IntelliJ中的Java文件生成UML图,所以所有的信息都在那里,我只需要一个帮助转换的工具
我试过了,下面是解决方法:
考虑到以下简化
Pojo.java
解决方案需要3个阶段
1。Java Pojo到JSON模式
我可以找到以下选项:
下面是带有选项
^{pr2}$1
的相关代码(也可以浏览网站):下面的输出是json架构字符串:
2。JSON架构后期处理
之所以需要这个阶段,主要是因为我发现对于简单的用例(至少),下面的步骤
3
需要一个强制具有definitions
属性的json模式。我想这是因为不断发展的模式定义@http://json-schema.org/。另外,我们可以包含一个title
属性来指定下一步将生成的python类的名称。在我们可以在上面步骤
1
的java程序中轻松地完成这些步骤。我们需要以下格式的json架构字符串:注意,只有加法是
"definitions": {}, "title": "Pojo"
3。Python类的Json模式
frx08/jsonschema2popo这项工作做得很好。在
还有一些要点
生成xml文件的最佳实践:
提供一个
package-info.java
文件和XmlSchema
:schemagen example.Address example\package-info.java
使用
@XmlType
注释名称空间属性指定名称空间@XmlType(namespace="http://myNameSpace")
在解决了创建xml文件的问题之后,尝试使用lxml’s objectify sub-package.或minidom module迭代错误的xml元素并创建Python类。在
TechWalla@{a1}有详细的说明。看看这对你有没有帮助。在
把说明书贴在这里 第1步 下载并解压缩java2python。您下载的文件是一个gzip文件,其中包含一个tarball文件;这两个都是压缩方案,都可以用7zip(一个开源程序)解压。在
第2步 将java2python文件夹的内容放在C:\驱动器的根目录下。在
第3步 在输入“python”之前,打开一个命令提示符并导航到“C:\java2python\”设置.py安装“不带引号。这将告诉Python解释器运行安装脚本并准备您的计算机。将目录更改为“C:\java2python\bin\”并保持窗口打开。在
第4步 将要转换的Java文件复制到java2python下的bin子文件夹中。在命令行中,运行“j2py-input_文件.java-o输出_文件.py,“用您的文件名替换输入\文件和输出\文件。在
第5步 打开新的Python文件夹并阅读代码。它可能并不完美,所以您需要仔细检查一下,以确保从Python的角度来看它是有意义的。然而,即使花时间手动检查,您也可以从手动转换中节省大量时间
相关问题 更多 >
编程相关推荐