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
cevap
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 "
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
nasıl ör bu yapabilmek bekliyorsunuz Java? –