Heim  >  Artikel  >  Backend-Entwicklung  >  Beispiel für die Verwendung von JPype zum Aufrufen von Java in Python

Beispiel für die Verwendung von JPype zum Aufrufen von Java in Python

黄舟
黄舟Original
2018-05-25 16:14:034276Durchsuche

In diesem Artikel wird hauptsächlich das Beispiel des JPype-Aufrufs von JAVA in Python vorgestellt. Der Herausgeber findet es recht gut, daher werde ich es jetzt mit Ihnen teilen und als Referenz verwenden. Kommen Sie und werfen Sie einen Blick mit dem Editor

1. Kurze Einführung in JPype

1.

JPype ist ein Tool, das es Python-Code ermöglicht, Java-Code einfach aufzurufen und so die Mängel von Python in einigen Bereichen (z. B. serverseitige Programmierung) zu überwinden.

2. Was ist der Unterschied zwischen JPype und Jython (dem Nachfolger von JPython)?

1) Verschiedene Laufumgebungen: Jython läuft auf JVM, während die eigentliche Laufumgebung von JPype immer noch Python-Laufzeit ist, aber während des Betriebs wird ein eingebetteter JVM gestartet

2) Benutzer sind unterschiedlich: Jython ist für Java-Programme und JPype ist für Python-Programmierer.

2. JPype-Installation

1. Installieren Sie zuerst Python2.7 und JAVA1.6

2. Installieren Sie JPype- 0.5.4.2.win32-py2.7.exe(http://sourceforge.net/projects/jpype/files/JPype/0.5.4/)

3.Ubuntu12.04 Installationsbefehl: sudo apt- Holen Sie sich die Installation von python-jpype

3. JPype-Nutzungsanweisungen

1. Starten Sie JVM

Die von JPype bereitgestellte Funktion startJVM() wird zum Starten der virtuellen JAVA-Maschine verwendet. Bevor nachfolgender JAVA-Code aufgerufen wird, muss diese Methode aufgerufen werden, um die virtuelle JAVA-Maschine zu starten.

Definition von jpype.startJVM()

startJVM(jvm, *args)

Parameter von jpype.startJVM()

Parameter 1: jvm, beschreiben Sie jvm.dll in Ihrem System Der Pfad, in dem sich die Datei befindet, z. B. „C:ProgrammeIBMJava50jrebinj9vmjvm.dll“. Der Standard-JVM-Pfad kann durch Aufrufen von jpype.getDefaultJVMPath() abgerufen werden.

Parameter 2: args, ein optionaler Parameter, der von JPype als Startparameter der Java Virtual Machine direkt an JVM übergeben wird. Hier sind alle legalen JVM-Startparameter geeignet, wie zum Beispiel:

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

2. Fahren Sie die JVM herunter

Nachdem Sie die JVM verwendet haben, können Sie jpype.shutdownJVM übergeben () Zum Herunterfahren der JVM verfügt diese Funktion über keine Eingabeparameter. Wenn das Python-Programm beendet wird, wird die JVM automatisch heruntergefahren.

3. Verweisen auf Java-Erweiterungspakete von Drittanbietern

Oft müssen Java-Erweiterungspakete von Drittanbietern in Python-Projekten aufgerufen werden, was ebenfalls eine wichtige Verwendung darstellt von JPype.

Durch Hinzufügen von -Djava.class.path=ext_classpath zum JVM-Startparameter können Sie vorhandene Java-Erweiterungspakete im Python-Code aufrufen.

4. Zugriff auf JAVA-Systemeigenschaften

Manchmal müssen einige Java-Anwendungen Systemeigenschaften in der JVM festlegen oder abrufen.

  1. Beispiel für das Festlegen von Systemvariablen beim Start der JVM:

  2. Fügen Sie die folgenden Parameter zu den JVM-Startparametern hinzu:

-Dproperty=value

4. Beispiele

1. Rufen Sie die JAVA-API direkt auf

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 Erweiterungspaket

1) Benutzerdefiniertes JAVA-JAR-Paket eines Drittanbieters: Packen Sie die JpypeDemo-Klasse als jpypedemo.jar-Datei und speichern Sie sie im Verzeichnis 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 Aufrufabschnitt JAVA-JAR-Paketprogramm eines Drittanbieters

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. Zugriff auf JAVA-Systemeigenschaften

Angenommen, die Eigenschaft, die Sie festlegen möchten, heißt yourProperty und der Eigenschaftswert ist yourValue.

1) Beispiel für das Festlegen von Systemvariablen beim Start von JVM

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

2) Beispiel für das Festlegen von Systemvariablen im Programm

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

3) Abrufen von Systemvariablen in das Programmbeispiel

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

Das obige ist der detaillierte Inhalt vonBeispiel für die Verwendung von JPype zum Aufrufen von Java in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn