Python調用java擴展C,三弟兄再爭端!

Python調用java擴展C,三弟兄再爭端!

Python調用java擴展C,三弟兄再別爭天下第一了!

python調用Java

前提:

Linux 環境

1 安裝 jpype1

安裝後測試代碼:

from jpype import *startJVM(getDefaultJVMPath(), "-ea")java.lang.System.out.println("Hello World")shutdownJVM()

2 調用非jdk的jar包, test.jar

Python調用java擴展C,三弟兄再爭端!

Python調用java擴展C,三弟兄再別爭天下第一了!

包中含有 com.Test類

package com;public class Test {public String test(String str){return str;}}

Python 調用jar包

jar_path = os.path.join(os.path.abspath('.'), 'libs/test.jar')jpype.startJVM(jpype.getDefaultJVMPath(), "-ea", "-Djava.class.path=%s" % jar_path)Test = jpype.JClass('com.Test')

或者通過JPackage引用Test類

com = jpype.JPackage('com')

Test = com.Test

t = Test()

res = t.test("a")

print res

jpype.shutdownJVM()

note: 注意Linux下的權限問題

python的C擴展

Python調用java擴展C,三弟兄再爭端!

Python調用java擴展C,三弟兄再別爭天下第一了!

前提條件

c編譯器用DEV-C++,

python(sys.version):'2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)]'

一、新建DEV-C++的DLL工程

Python調用java擴展C,三弟兄再爭端!

Python調用java擴展C,三弟兄再別爭天下第一了!

二、設置DEV工程屬性

參考 C中嵌入python 文中的設置工程屬性

三、生成python的C擴展“.pyd”文件

編寫DLL的代碼,代碼如下:

Python調用java擴展C,三弟兄再爭端!

Python調用java擴展C,三弟兄再起爭端!

編譯後生成“PydMath.dll”的文件,改名為 “PydMath.pyd”,這樣python就可以import此擴展模塊。import結果如下:

Python調用java擴展C,三弟兄再爭端!

Python調用java擴展C,三弟兄再別爭天下第一了!

四、Python調用擴展測試

python測試代碼如下:

Python調用java擴展C,三弟兄再爭端!

Python調用java擴展C,三弟兄再別爭天下第一了!

運行結果如下:

Python調用java擴展C,三弟兄再爭端!

Python調用java擴展C,三弟兄再別爭天下第一了!

至此,python的擴展已完工,順便提下,在寫博文的時候chrome崩潰了,寫的內容沒保存,重啟恢復頁面後,所寫的內容都在,讓人心情大落大起呀,該說chrome啥好呢。。。

轉發+關注 私信小編 01 即可獲取Python全套學習資料


分享到:


相關文章: