У меня есть относительно большое Java-приложение, которое выиграет от любви к Python. С этой целью я работаю над тем, чтобы запустить его в Jython. Мой нынешний контрольно-пропускной пункт - правильный путь к классам.
Я применил два подхода к настройке пути к классам:
- Используя сценарий оболочки, я создал список jar-файлов и выполнил
java -cp ${CP} -jar jyton.jar
, где $ CP - список jar-файлов, необходимых для моего приложения. Это не похоже на работу. Я не могу импортировать какие-либо классы из этих банок, получая только ImportError: No module named apache
.
- Используя скрипт начальной загрузки 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:
, не очень понравилось бы. На данный момент я в растерянности.