Uruchamianie programu Java z użyciem Pythona
Na potrzeby jednego z projektów na uczelni chciałem sprawdzić, jakie możliwości udostępnia GUI pakietu JDMP. Nie lubię jednak Javy i nie chciało mi się w niej pisać nawet króciutkiego programiku. Postanowiłem, że zamiast tego po raz pierwszy spróbuję Jythona.
Jython, następca JPythona, jest implementacją Pythona w Javie i, co w tym przypadku najważniejsze, pozwala posługiwać się klasami Javy przez skrypty Pythona (a także z użyciem trybu interaktywnego!).
Po zainstalowaniu Jythona warto nadać odpowiednie uprawnienia dla katalogu cache’a. W moim przypadku było to:
# /opt/jython/jython
# chmod -R a+rw /opt/jython/cachedir/
Dzięki temu unikniemy komunikatów takich jak poniższy:
*sys-package-mgr*: can't write index file
Poza tym cache powinien odrobinę przyspieszyć pracę Jythona, a przynajmniej tak mi się wydaje ;)
Wracając do meritum: skrypt wywołujący funkcję main() interesującej mnie klasy wygląda bardzo prosto. Wystarczy dodać do ścieżki systemowej plik JAR i zaimportować klasę.
W moim przypadku funkcja main() wywołana bez argumentów zgłosiła błąd, więc szybko dopisałem coś, co powinno z grubsza symulować wywołanie z konsoli.
#!/usr/bin/env /opt/jython/jython import sys sys.path.append("jdmp.jar") import org.jdmp.gui.JDMP org.jdmp.gui.JDMP.main(["test","-g"])
PS Domyślam się, że pewnie jest prosty sposób na uruchomienie tej funkcji za pomocą Javy, ale znalezienie takiego rozwiązania zajęłoby mi pewnie tyle samo, co napisanie powyższego skryptu.
