Pytanie w sprawie eclipse, java, python, pydev, jython – plik .class z jythona z pydev

3

Moją pierwszą próbą w jythonie jest projekt java / jython, który piszę w eclipse z pydev.

Stworzyłem projekt java, a następnie zrobiłem z niego projekt pydev przez projekt RightClick >> pydev >> ustawiony jako ... masz pomysł. Następnie dodałem dwa foldery źródłowe, jeden dla Javy i jeden dla Jythona, a każdy folder źródłowy ma pakiet. I ustawiam każdy folder jako ścieżkę kompilacji dla projektu. Chyba dam ci znać to wszystko, więc mam nadzieję, że powiesz mi, czy nie ustawiłem poprawnie projektu.

Ale prawdziwe pytanie brzmi:w jaki sposób uzyskać kod jython do pliku klas, aby kod java mógł go użyć? Preferowaną metodą byłoby to, że eclipse / pydev zrobi to dla mnie automatycznie, ale nie mogę tego zrozumieć. Coś wspomnianego w przewodniku użytkownika jython sugeruje, że jest to możliwe, ale nigdzie nie mogę znaleźć na nim informacji.

EDIT: Znalazłem kilka informacjitutaj itutaj, ale sprawy nie idą zbyt gładko.

Dokładnie podążałem za przewodnikiem w drugim łączu, ale nie mogę zrozumieć, jak uzyskać jythonc, aby był konstruktorem mojej klasy Pythona.

Złożyłem odpowiedź [tutaj] [1] na powiązane pytanie. [1]:stackoverflow.com/questions/2583192/… Robert Fleming
Czy miejsce, w którym pliki klas są generowane przez jythonc na ścieżce klasy? seth

Twoja odpowiedź

2   odpowiedź
0

ło się użycie modułów jython w kodzie java. Jedynym trudnym punktem jest to, że moduły * .py nie są kompilowane do plików * .class. Okazuje się więc, że jest to egzotyczny skrypt w Javie. Wydajność może oczywiście pogorszyć się w porównaniu z modułami jythonc'ed py, ale jak już dostałem ze stron społeczności jython, nie będą one obsługiwać jythonc (i faktycznie już je upuściły w jython2.5.1).

Więc jeśli zdecydujesz się zastosować podejście nie-jythonc, powyższy samouczek jest doskonały. Musiałem trochę zmodyfikować kod JythonFactory.java:

String objectDef = "=" + javaClassName + "(your_constructor_params here)";
try {
       Class JavaInterface = Class.forName(interfaceName);

       System.out.println("JavaInterface=" + JavaInterface);

       javaInt = 
            interpreter.get("instance name of a jython class from jython main function").__tojava__(JavaInterface);
    } catch (ClassNotFoundException ex) {
        ex.printStackTrace();  // Add logging here
    }
5

został przeniesiony do innego projektu o nazwieZacisk, ale z tym powiedział ...

... możesz wstępnie skompilować skrypty Pythona na pliki .class, używając:

jython [jython home] /Lib/compileall.py [katalog, w którym przechowujesz kod Pythona]

Źródło -Jython Newsletter, marzec 2009

Kiedy nakarmiłem go folderem z Pythonem2.7 kod (wiedząc, że nie powiedzie się w Jythonie2.5) wyprowadził plik .class, nawet jeśli nie działa. Spróbuj tego za pomocą skryptów Jython. Jeśli to zadziała, daj nam znać, bo będę tam, gdzie wkrótce będziesz.

Gdy będziesz już tak daleko, nie jest trudno przekonwertować instrukcję wiersza poleceń na narzędzie zewnętrzne w PyDev, które można wywołać w razie potrzeby.

Powiązane pytania