java+转001_001 发大招了 神器的效率工具--Java代码转python代码

今天发现一个好玩的工具:可以直接将java转成python

1、 安装工具(windows 环境下面)

先下载antlr:

下载链接如下:

或者到百度云下载:

百度云链接:http://pan.baidu.com/s/1gdgXUM3 密码:2qrx

下载成功并解压后,进入\antlr-3.1.3\runtime目录,输入CMD,在CMD中输入如下指令:

python setup.py install,以安装antlr包,如果报错,进入\antlr-3.1.3\runtime\Python目录下,进行同样的操作

1c4cc36ba6c2f4ce7eb1591ee6292c75.png

ae1a261a5f2daa7381c5f256730d7194.png

6976ecd4eab6a1178a56cd8fd765b2c1.png

c35728d10e796cc5bed67a09fb3d458b.png

79a0c3ad306d1aa9255335dbe4430f80.png

2、安装完antlr的工具包后,如上步骤,在相同目录下,即\antlr-3.1.3\runtime\Python下,输入CMD,进入CMD中,输入指令:pip install java2python ,以在线安装java2python包 。如果通过指令的方式没法成功下载安装java2python包的话,也可以去github上下载java2python包,下载成功后,解压到本地,通过本地安装的方式安装java2python包。

java2python包的Github路径如下:

a1a5cf0841afc511cb1c1a6955b338f2.png

安装过程中,遇到"'pip' 不是内部或外部命令,也不是可运行的程序或批处理文件"的问题

解决"'pip' 不是内部或外部命令,也不是可运行的程序或批处理文件"的问题的方法:

参考下面链接解决:https://blog.csdn.net/miss85246/article/details/81069276

解决后,pip命令可以正常使用

43e01b641a9761fa1c31354463d1faa0.png

继续使用命令在线安装java2python包

baaab1b575b2e8199341f8d90646d2b6.png

3c16a0163f0cf6cd393ea61176260964.png

遇到安装超时的问题:

c90a9f7a73d676330819f1bdcd03334f.png

d90a755b2b48f9d2e81619c428c9e229.png

安装超时,按照命令中给出的黄色提示,输入指令:python -m pip install --upgrade pip,以更新pip包

You are using pip version 9.0.1, however version 19.3.1 is available.

You should consider upgrading via the 'python -m pip install --upgrade pip' command.

b020e3a5a1c78020522ed3160b1cbcec.png

开始更新pip包

3aa01cc5c5336abe104e4b5ccf1ac2bf.png

开始下载pip包

d7d3db2b1fa35c9edebf0626633bbec4.png

最终依然没有更新成功pip包,没法使用pip命令在线安装java2python包。

只好github上下载java2python包:https://github.com/natural/java2python.git,然后进行本地安装。

本地安装java2python包

参考链接:

pip install *.whl      直接在pip install命令后添加whl包的全路径名就能本地安装成功了

下载需要的包,一般为zip、tar.gz等的压缩包,解压后,打开命令行,进入解压目录,使用python setup.py install命令安装。

进入路径

6c46b644a8fed08cf56b75e03c5f3455.png

在上图红色框中输入cmd

之后cmd中输入命令:python setup.py install

开始本地安装java2python包

7220512058dc41bb952dff15e0eee0bc.png

本地安装java2python包安装成功

0b051fba98f967e5c17c2fbfefec22bb.png

861c288f6f34a327593bc03cb7236e7f.png

2、使用工具

在Python27\Scripts目录下会生成一个j2py文件,它其实是个python文件

cmd进入该目录下:

然后将一个已写好的java程序跟踪下面的命令后面(.java 文件在python安装路径:\Python27\Scripts\目录下;如不在这个目录下,请带上具体路径;):

python j2py your_java_file.java

如下的java代码:

7b8266bd9dab8797e40ef36a5ee8169e.png

42967988a1c197aec3db15c774b18bf8.png

cmd进入上图目录下

c5135bf538e6d6c6d3d8547ba14d0036.png

3e1c0365ab9ce644ca59b98b188af7de.png

fa03553ea8f0230572bf2e382b019754.png

输入命令:

python j2py+需要转为python文件的Java文件的路径及其文件名和后缀

本例中为需要转为python文件的Java文件TokenTest.java就在script目录下,

所以无需添加路径,所以本例的指令为

python j2py

TokenTest.java

执行命令出错,遇到报错,提示编码格式有问题:

File "j2py", line 120, in runTransform

tree = buildAST(source)

File "E:\Python\Python27\lib\site-packages\java2python\compiler\__init__.py", line 15, in buildAST

lexer = Lexer(StringStream(source))

File "E:\Python\Python27\lib\site-packages\antlr_python_runtime-3.1.3-py2.7.egg\antlr3\streams.py", line 336, in __init__

self.strdata = unicode(data)

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 1058: ordinal not in range(128)

16e88569f07066de93e70df73b9ab398.png

解决办法:找到出错的文件E:\Python\Python27\lib\site-packages\antlr_python_runtime-3.1.3-py2.7.egg\antlr3\streams.py,

d932ba7cb75a49070817d5685c180b94.png

打开文件,添加下面三行代码:

import sys

reload(sys)

sys.setdefaultencoding('utf-8')

参考图:

b94789d0931b04fdc19014c46e04fc96.png

自己的图:

8c8a1034c68c35a02d8c234442c6e614.png

保存对streams.py添加代码后的更改;

再次执行命令:python j2py

TokenTest.java

ok,执行成功!!!Java代码已经成功转成Python代码,将代码拷贝出来即可调试使用!

f1fec491a2992b762f4c74cc84b9a56e.png

转换后的Python代码如下:#!/usr/bin/env python

""" generated source for module TokenTest """

from __future__ import print_function

# package: com.example.demo

class TokenTest(object):

""" generated source for class TokenTest """

@classmethod

def main(cls, args):

""" generated source for method main """

try:

timestamp = str(Date().getTime())

length = len(timestamp)

integer = Integer.valueOf(timestamp.substring(0, length - 3))

# =================================================================TEST=======================================================================

# print("测试时间戳:"+integer);

appId = "73e311b7-89cb-b2c3-754f-24aa383bf873"

key = "925985d0dced69adf7741eac7e6a6850"

s2 = genHMAC(appId + "|" + integer, key)

# print("测试签名:"+base64Url(s2));

testToken = sendGet(testUrl, "id=" + appId + "&timestamp=" + integer + "&valid_time=36000&sign=" + base64Url(s2))

testMap = JSON.parse(testToken)

print("测试token:" + testMap.get("data"))

except

Exception

as e:

#  TODO Auto-generated catch block

e.printStackTrace()

@classmethod

def base64Url(cls, str_):

""" generated source for method base64Url """

str_ = str_.replaceAll("\\=", "")

str_ = str_.replaceAll("\\+", "-")

str_ = str_.replaceAll("\\/", "_")

return str_

HMAC_SHA1_ALGORITHM = "HmacSHA1"

@classmethod

def genHMAC(cls, data, key):

""" generated source for method genHMAC """

result = None

try:

# 根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称

signinKey = SecretKeySpec(key.getBytes(), cls.HMAC_SHA1_ALGORITHM)

# 生成一个指定 Mac 算法

的 Mac 对象

mac = Mac.getInstance(cls.HMAC_SHA1_ALGORITHM)

# 用给定密钥初始化 Mac 对象

mac.init(signinKey)

# 完成 Mac 操作

rawHmac = mac.doFinal(data.getBytes())

result = Base64.encodeBase64(rawHmac)

except NoSuchAlgorithmException as e:

System.err.println(e.getMessage())

except InvalidKeyException as e:

System.err.println(e.getMessage())

if None != result:

return

str(result)

else:

return None

if __name__ == '__main__':

import sys

TokenTest.main(sys.argv)

参考链接:

标签:__,Java,python,代码,str,pip,java2python,安装

来源: https://www.cnblogs.com/xlfcjx/p/11770423.html

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值