今天發現一個好玩的工具:可以直接將java轉成python
1、 安裝工具(windows 環境下面)
先下載antlr:
下載鏈接如下:
http://www.antlr3.org/download/antlr-3.1.3.tar.gz
或者到百度雲下載:
百度雲鏈接: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目錄下,進行同樣的操作
2、安裝完antlr的工具包后,如上步驟,在相同目錄下,即\antlr-3.1.3\runtime\Python下,輸入CMD,進入CMD中,輸入指令:pip install java2python ,以在線安裝java2python包 。如果通過指令的方式沒法成功下載安裝java2python包的話,也可以去github上下載java2python包,下載成功后,解壓到本地,通過本地安裝的方式安裝java2python包。
java2python包的Github路徑如下:
https://github.com/natural/java2python.git
安裝過程中,遇到"'pip' 不是內部或外部命令,也不是可運行的程序或批處理文件"的問題
解決"'pip' 不是內部或外部命令,也不是可運行的程序或批處理文件"的問題的方法:
參考下面鏈接解決:https://blog.csdn.net/miss85246/article/details/81069276
解決后,pip命令可以正常使用
繼續使用命令在線安裝java2python包
遇到安裝超時的問題:
安裝超時,按照命令中給出的黃色提示,輸入指令: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.
開始更新pip包
開始下載pip包
最終依然沒有更新成功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命令安裝。
進入路徑
在上圖紅色框中輸入cmd
之后cmd中輸入命令:python setup.py install
開始本地安裝java2python包
本地安裝java2python包安裝成功
2、使用工具
在Python27\Scripts目錄下會生成一個j2py文件,它其實是個python文件
cmd進入該目錄下:
然后將一個已寫好的java程序跟蹤下面的命令后面(.java 文件在python安裝路徑:\Python27\Scripts\目錄下;如不在這個目錄下,請帶上具體路徑;):
python j2py your_java_file.java
如下的java代碼:
cmd進入上圖目錄下
輸入命令: 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)
解決辦法:找到出錯的文件E:\Python\Python27\lib\site-packages\antlr_python_runtime-3.1.3-py2.7.egg\antlr3\streams.py,
打開文件,添加下面三行代碼:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
參考圖:
自己的圖:
保存對streams.py添加代碼后的更改;
再次執行命令:python j2py TokenTest.java
ok,執行成功!!!Java代碼已經成功轉成Python代碼,將代碼拷貝出來即可調試使用!
轉換后的Python代碼如下:
#!/usr/bin/env python from __future__ import print_function # package: com.example.demo class TokenTest(object): @classmethod def main(cls, args): if __name__ == '__main__': import sys TokenTest.main(sys.argv) |
參考鏈接:
https://www.cnblogs.com/ceo-python/p/11601811.html
https://jingyan.baidu.com/article/3c343ff7fb279a0d377963a0.html