pythonはjavaクラスをどのように呼び出しますか

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

pythonはjavaクラスをどのように呼び出しますか
PythonはOSモジュールを使用してcmdを呼び出す方法
pythonはどのようにバックスラッシュを出力しますか
pythonはパッケージをどのように更新しますか
pythonはどのように辞書のキーを呼び出しますか
pythonはどのようにマトリックス操作を実行しますか
Pythonはどのように更新値を一覧表示しますか
pythonはどのように環境を変えますか
pythonでクラスを書く方法
pythonは依存関係パッケージをどのようにインポートしますか
pythonはどのようにインタラクティブモードに入りますか
Pythonはどのようにxmlファイルを生成しますか
pythonはどのように素数を決定しますか
pythonはどのように計算速度を向上させますか
Pythonはjsonモジュールをどのように処理しますか
pythonはreturnとyieldをどのように区別しますか
Pythonはどのようにデータをjsonファイルに保存しますか
pythonはどのようにしてキーボードから入力例を取得しますか
pythonがどのように発明されたか
pythonはプログラムをどのように処理しますか開くことができません
pythonはモジュールのインストールが完了したとどのように判断しますか
CentOS PythonJavaのインストール
PythonがXMLを解析する方法
自分でpythonを学ぶのにどれくらい時間がかかりますか?
pythonコードにコメントする方法
Pythonが文字列の大文字小文字を変換する方法
pythonをすばやく学ぶ方法
pythonプラグインをアンインストールする方法
Pythonは複数の継承をサポートしていますか?
PythonがFTP機能を実装する方法
pythonオブジェクトを理解する方法
パイソンタプルの使い方
python関数、クラス、モジュール、パッケージ
pythonがパッケージパッケージを参照する方法を説明する