Загрузка ресурсов из classpath в Jython с использованием 'classpath:' - PullRequest
4 голосов
/ 08 августа 2010

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

Я применил два подхода к настройке пути к классам:

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

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 06 ноября 2014

Если вы вызываете автономный jar-файл с помощью java -jar, то из Java-документации ...

-jar

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

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

0 голосов
/ 12 мая 2011

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

CLASSPATH = $ {CLASSPATH}: your.jar

export CLASSPATH

jython your_script.jy

...