2010-08-08 8 views
4

У меня есть относительно большое Java-приложение, которое выиграет от любви на Python. С этой целью я работал над тем, чтобы запустить его и запустить в Jython. Мой текущий контрольно-пропускной пункт получает правильный путь.Загрузка ресурсов из класса path в Jython с помощью 'classpath:'

Я взял два подхода к установке: классы

  1. Используя скрипт, я создал список банок и казнил java -cp ${CP} -jar jyton.jar где $ CP представляет собой список из баночек, необходимых для моих приложение. Кажется, это не работает. Я не могу импортировать какие-либо классы из этих банок, вместо этого получаю только ImportError: No module named apache.
  2. Используя скрипт python для начальной загрузки, я создал список путей с помощью glob и добавил их к текущему пути, используя [sys.path.append(path) for path in JAR_LIST]. Кажется, это работает правильно; Теперь я могу импортировать любые классы, которые мне нужны, из включенных банок.

Вышеприведенное немного запутанно, поскольку большинство информации, которую я смог найти, направлено на использование $ CLASSPATH и -cp для добавления ваших банок, но я не могу заставить это работать. Итак, вопрос до сих пор: Является ли # 2 правильным способом добавления зависимостей к вашему пути к классам при использовании Jython?

Основная причина, по которой я ставил под сомнение мои методы, состоит в том, что у меня все еще возникают проблемы с использованием моего приложения. Ряд мест в моем приложении уважает ресурсы, используя относительные URL-адреса: classpath:some-critical-file.xml

some-critical-file.xml и несколько моих классов находятся в одной и той же банке. Я могу импортировать классы из этого кувшина, но любые попытки загрузить мой XML с classpath:some-critical-file.xml результатами в java.io.FileNotFoundException

Любое понимание, почему мои классы доступны, но относительные пути к ресурсам с использованием classpath: не было бы очень признательно. На данный момент я в растерянности.

+0

Как вы открываете пути, такие как «classpath: file.xml»? –

ответ

0

В последнее время я столкнулся с некоторой странностью в классическом пути. Пытались ли вы старый школьный подход:

CLASSPATH = $ {} CLASSPATH: your.jar

экспорт CLASSPATH

Jython your_script.jy

0

Если вы вызываете автономная банка с использованием java -jar, затем от Java Documentation ...

-j ar

При использовании этой опции JAR-файл является источником всех пользовательских классов, а другие параметры пути пользовательского класса игнорируются.

Невозможно добавить что-либо к пути класса при использовании -jar. См. this answer для решения - в основном добавьте jython.jar в путь к классам (используя -cp или CLASSPATH) и сразу запустите класс org.python.util.jython.

Смежные вопросы