python自体はスクリプト言語であり、サードパーティのライブラリを呼び出す場合が多いため、javaを使用してpythonを呼び出す方が、pythonを使用してjavaを呼び出すほど便利ではない場合があります。これは、pythonからjavaを呼び出すプロセスで必要な操作の概要です。 (デフォルトはLinux Ubuntuで呼び出されます)
まず、linux上のjdkをインストールする必要があります。このプロセスはここには示されていません。Pythonはlinuxに付属しており、ここでのデフォルトはpython2.7です。
**jpype **をインストールします
Pythonは、主にpythonでjpypeをインポートすることによってjavaを呼び出します。
jpypeのインストールは非常に簡単です。http://jpype.sourceforge.net/からJPype-0.5.4.2.zipをダウンロードして、任意のフォルダーに配置します。/home/UsrName/jpype/の下に配置します。次に、このフォルダの下:
unzip Jpype-0.5.4.2.zip
cd Jpype-0.5.4.2
python setup.py install
インストールが完了し(権限拒否エラーが発生した場合は、最後のコマンドをsudo python setup.py installに変更してください)、この時点でpythonで実行できます。
# python
import jpype
Jpypeのインストールが完了しました。
**Jpypeを使用してJava **を呼び出す
例として、javaでカスタム関数を呼び出すだけです。
最初に単純なJavaコードを添付します。この関数は、指定された文字列に対して処理された文字列を返し、2つのパラメーターを指定して2つの数値の合計を返します。
publicclassJpypeDemo{publicstatic String sayHello(String user){//注意! pythonによって呼び出されるインターフェイス関数として、静的である必要があります。そうでない場合、python
Endはエラーを報告します
return"hello"+ user;}publicstatic int calc(int a, int b){//注意! pythonによって呼び出されるインターフェイス関数として、静的である必要があります。そうでない場合、python
Endはエラーを報告します
return a + b;}publicstaticvoidmain(String[] args){}}
jarファイルとしてパッケージ化します。ここでは、パッケージ化されたファイルにJpypeDemo.jarという名前を付け(パッケージ化しない人はBaiduに問い合わせてください)、pythonスクリプトが配置されているディレクトリに配置します。
次に、python側でjavajarパッケージを使用するコードを指定します。
import jpype
from jpype import*import os.path
jarpath = os.path.abspath('.') #この関数は、現在のpythonスクリプトの絶対パスを取得するために使用されます
startJVM("/usr/local/java/jdk1.8.0_181/jre/lib/amd64/server/libjvm.so","-ea","-Djava.class.path=%s"%(jarpath +'/JpypeDemo.jar'))
このstartJVM関数の機能は、Java仮想マシンをロードすることです。最初のパラメーターは、Java jdkのインストール場所である必要があります。各人のインストール場所は異なります。私のアドレスは、上記の太字のセクションです(注!!!はい)チュートリアルでは、getDefaultJVMPath()関数を使用してJavaアドレスを直接取得できると述べていますが、推奨されません!推奨されません!推奨されません!この関数によって取得されるアドレスは、コンピュータに付属しているJavaのOracleバージョンである可能性が高いため、独自のインストールではありませんJava、これは環境変数のためにエラーを引き起こします!); 2番目のパラメーターは不明確なので、とにかく追加します; 3番目のパラメーターはパッケージ化されたjarパッケージの絶対パスです、あなたは私がそうすることがわかりますJpypeDemo.jarを、以前に取得した現在のディレクトリのパスと組み合わせます
JDClass =JClass("JpypeDemo") #Javaクラスに申し込む(magic〜)
jd = JDClass
jprint = java.lang.System.out.println #Java出力クラスの出力関数に申し込む
jprint( jd.sayHello(" waw ")) #このクラスでsayHello関数を呼び出し、Java出力関数を使用してJava戻り値を出力します
jprint( jd.calc(2,4)) #このクラスのsum関数を呼び出し、Java出力関数を使用してJava戻り値を出力します
# Java仮想マシンを閉じます。書き込むかどうかは指定できます。書き込まない場合は、プログラムの終了時に自動的に閉じられます。
shutdownJVM()
上記のプログラムを実行して、出力を取得します。
hello waw
6
JVM activity report:
classes loaded: 32
JVM has been shutdown
コンテンツの拡張:
Pythonはjavajarパッケージメソッドを呼び出します
from jpype import*
jvmPath =getDefaultJVMPath()
jars =["./Firstmaven-1.0-SNAPSHOT-jar-with-dependencies.jar"]jvm_cp ="-Djava.class.path={}".format(":".join(jars))startJVM(jvmPath,jvm_cp)
sedisObj =JClass("LogBack")
so =sedisObj()
print so.get_v('name0')
print so
print so.get_int()shutdownJVM()
これまでのところ、pythonがjavaクラスを呼び出す方法に関するこの記事が紹介されています。javaクラスを呼び出すためのより関連するpythonメソッドについては、ZaLou.Cnの以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後、ZaLouをさらにサポートすることを願っています。 Cn!
Recommended Posts