2012-06-16 18 views
6

Zaten çalışmakta olan bir Java kavanoğunda bulunan belirli yöntemleri çağırmak istiyorum (Çalışıyor olması garanti edilir). Jython gibi şeyler buldum, ama bunlar sadece Java'nın yerel sınıflarına ve benzerlerine erişebiliyor gibi görünüyor.Python'dan yerel olmayan Java kodunu çağırın

+0

nasıl ör bu yapabilmek bekliyorsunuz Java? –

cevap

3

Kontrol dışarı bu. Calling Java from Python

"Ayrıca frontpage ve dokümantasyon çok üzerinde bir örnek vardır Py4J kullanabilirsiniz, ancak temelde, sadece piton kodundan Java yöntemleri çağırmak sanki onlar idi piton yöntemleri:

from py4j.java_gateway import JavaGateway 

geçidi = JavaGatew Bugün() # JVM bağlanmak

java_object = gateway.jvm.mypackage.MyClass() # çağırmak yapıcı

other_object = java_object.doThat()

other_object.doThis (1, 'abc')

gateway.jvm.java.lang.System.out.println ('Merhaba Dünya!') # çağrısı statik yöntem

Jython'un aksine, Py4J'nin bir kısmı Python VM'de çalışır, böylece her zaman Python'un en son sürümü ile "güncel" olur ve Jython'da iyi çalışmayan kitaplıkları kullanabilirsiniz (örn., Lxml). Diğer kısım aramak istediğiniz Java VM'de çalışır.

iletişim yerine JNI soketi ile yapılır ve Py4J kendi protokolü (vb bellek yönetmek için, belirli davaları optimize etmek için) sahiptir "

+2

Py4J Web Sitesinden: "Yukarıdaki Python kodunu çalıştırmadan önce Java programının başlatılması gerektiğini unutmayın. Başka bir deyişle, Py4J bir JVM başlatmaz. "---- Web sitelerine gidin: http://py4j.sourceforge.net/index.html – tabchas

İlgili konular