Вопрос по eclipse, java, python – .class файл из jython с pydev

3

Моя первая попытка использования jython - это проект java / jython, который я пишу в затмении с помощью pydev.

Я создал проект Java, а затем сделал его проектом Pydev с помощью проекта RightClick & gt; & gt; pydev & gt; & gt; установить как ... вы поняли. Затем я добавил две исходные папки, одну для Java и одну для Jython, и у каждой исходной папки есть пакет. И я установил каждую папку как путь сборки для проекта. Полагаю, я сообщаю вам обо всем этом, так что, надеюсь, вы сможете сказать мне, правильно я настроил проект или нет.

Но настоящий вопрос заключается в следующем:how do I get my jython code made into a class file so the java code can use it? Предпочтительным способом будет то, что eclipse / pydev сделает это для меня автоматически, но я не могу понять это. То, что упомянуто в руководстве пользователя jython, подразумевает, что это возможно, но я не могу найти информацию о нем где-либо.

РЕДАКТИРОВАТЬ: я нашел некоторую информациюВот а такжеВот, но дела идут не слишком гладко.

Я довольно внимательно следовал руководству по второй ссылке, но не могу понять, как заставить jythonc создать конструктор для моего класса python.

Является ли место, где файлы классов генерируются jythonc на вашем пути к классам? seth
Я представил ответ [здесь] [1] на связанный вопрос. [1]:stackoverflow.com/questions/2583192/… Robert Fleming

Ваш Ответ

2   ответа
5

он был разветвлен другому проекту под названиемзажим, но с этим сказал ...

...you can pre-compile your python scripts to .class files using:

jython [jython home]/Lib/compileall.py [the directory where you keep your python code]

Источник -Jython Newsletter, March 2009

Когда я кормил его папкой с Python2.7 код (зная, что это потерпит неудачу в Jython2.5) он действительно вывел файл .class, даже если он не работает. Попробуйте это с вашими скриптами Jython. Если это работает, пожалуйста, дайте нам знать, потому что я буду там, где вы достаточно скоро.

Как только вы зайдете так далеко, нетрудно преобразовать оператор командной строки во внешний инструмент в PyDev, который можно вызывать по мере необходимости.

0

Доступа к Jython из Java без использования jythonc & quot; В учебнике стало возможным использовать модули jython внутри кода Java. Единственная сложность в том, что модули * .py не компилируются в файлы * .class. Так что получается экзотический сценарий внутри Java. Производительность, конечно, может ухудшаться по сравнению с модулями jythonc и ed, но, как я понял на страницах сообщества jython, они не собираются поддерживать jythonc (и фактически уже удалили его в jython2.5.1).

Поэтому, если вы решите следовать подходу, отличному от jythonc, приведенный выше учебник будет идеальным Мне пришлось немного изменить код 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
    }

Похожие вопросы