ホームページ  >  記事  >  バックエンド開発  >  JPypeを使用してPythonでJavaを呼び出す方法の共有例

JPypeを使用してPythonでJavaを呼び出す方法の共有例

黄舟
黄舟オリジナル
2018-05-25 16:14:034370ブラウズ

この記事では主に JPype が Python で JAVA を呼び出す例を紹介していますが、編集者が非常に良いと思ったので、参考として共有します。編集者をフォローして一緒に見てみましょう

1. JPypeの簡単な紹介

1. JPypeとは何ですか?

JPype は、Python コードから Java コードを簡単に呼び出すことができるツールです。これにより、一部の領域 (サーバーサイド プログラミングなど) での Python の欠点が克服されます。

2. JPype と Jython (JPython の後継) の違いは何ですか?

1) 異なる実行環境: jython は jvm 上で実行されますが、JPype の実際の実行環境は依然として Python ランタイムですが、動作中に埋め込み jvm が開始されます。

2) 異なるユーザー: jython は Java プログラム用です。 JPype は Python プログラマー向けです。

2. JPypeのインストール

1. まずPython2.7とJAVA1.6をインストールします

2. JPype-0.5.4.2.win32-py2.7.exeをインストールします(http://sourceforge.net/ project/jpype/files/JPype/0.5.4/)

3. Ubuntu12.04 インストールコマンド: sudo apt-get install python-jpype

3. JPype の使い方

1. JVM を起動します

JPype が提供する startJVM() 関数は JAVA 仮想マシンの起動に使用されるため、後続の JAVA コードが呼び出される前に、このメソッドを呼び出して JAVA 仮想マシンを起動する必要があります。

jpype.startJVM() 定義

startJVM(jvm, *args)

jpype.startJVM() パラメータ


パラメータ 1: jvm、「C:Program FilesIBMJava50jrebinj9vmjvm.dll」など、システム内で jvm.dll ファイルが配置されているパスを記述します。 。デフォルトの JVM パスは、jpype.getDefaultJVMPath() を呼び出すことで取得できます。

パラメータ 2: オプションのパラメータである args は、Java 仮想マシンの起動パラメータとして JPype によって JVM に直接渡されます。ここでは、次のようなすべての正当な JVM 起動パラメータが適切です。

 -agentlib:libname[=options] 
 -classpath classpath 
 -verbose 
 -Xint

2. JVM をシャットダウンします

JVM の使用が完了したら、jpype.shutdownJVM() を通じて JVM をシャットダウンできます。入力パラメータ。 Python プログラムが終了すると、JVM は自動的にシャットダウンします。

3. サードパーティの Java 拡張機能パッケージを参照する

多くの場合、サードパーティの Java 拡張機能パッケージを Python プロジェクトで呼び出す必要がありますが、これも JPype の重要な用途です。

JVM 起動パラメータに -Djava.class.path=ext_classpath を追加すると、Python コードで既存の Java 拡張機能パッケージを呼び出すことができます。

4. JAVA システム プロパティにアクセスする

一部の Java アプリケーションでは、JVM でシステム プロパティを設定または取得する必要がある場合があります。

  1. JVM 起動時のシステム変数の設定例:

  2. JVM 起動パラメータに次のパラメータを追加します:

  3. -Dproperty=value

4. 例

1. JAVA API

from jpype import * 
import os.path 
startJVM("C:/Java/jdk1.6.0_10/jre/bin/client/jvm.dll", "-ea") 
java.lang.System.out.println("hello World") 
shutdownJVM()
を直接呼び出します。

2. JAVA サードパーティ拡張パッケージを呼び出します

1) JAVA カスタム サードパーティ jar パッケージ: JpypeDemo クラスを jpypedemo.jar ファイルとしてパッケージ化し、F:/sample_Py ディレクトリに保存します

package jpype; 
 
public class JpypeDemo { 
public String sayHello(String user){ 
return "hello" + user; 
} 
public int calc(int a, int b){ 
return a + b;  
} 
}

2) Python はサードパーティの JAVA jar パッケージ プログラム

from jpype import * 
import os.path 
jarpath = os.path.join(os.path.abspath('.'), 'F:/sample_Py/') 
startJVM("C:/Java/jdk1.6.0_10/jre/bin/client/jvm.dll","-ea", "-Djava.class.path=%s" % (jarpath + 'jpypedemo.jar')) 
#ubuntu 中startJVM("/home/geek/Android/jdk1.6.0_43/jre/lib/i386/server/libjvm.so","-ea", "-Djava.class.path=%s" % (jarpath + 'XXX.jar')) 
JDClass = JClass("jpype.JpypeDemo") 
jd = JDClass() 
#jd = JPackage("jpype").JpypeDemo() #两种创建jd的方法 
jprint = java.lang.System.out.println 
jprint(jd.sayHello("waw")) 
jprint(jd.calc(2,4)) 
shutdownJVM()

3. JAVA システム プロパティにアクセスする

設定するプロパティの名前が yourProperty で、プロパティ値が yourValue であるとします。

1) JVM起動時のシステム変数の設定例

import jpype 
 jvmPath = jpype.getDefaultJVMPath() 
 jvmArg = “ -DyourProperty=yourValue ”
 if not jpype.isJVMStarted(): 
  jpype.startJVM(jvmPath,jvmArg)

2) プログラム内でのシステム変数の設定例

import jpype 
 prop = “ yourProperty ”
 value = “ yourValue ”
 system = jpype.JClass('java.lang.System') 
 system.setProperty(str(prop),str(value))

3) プログラム内でのシステム変数の取得例

import jpype 
 prop = “ yourProperty ”
 system = jpype.JClass('java.lang.System') 
 value = system.getProperty(str(prop))

以上がJPypeを使用してPythonでJavaを呼び出す方法の共有例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。