#scala #playframework #jar #sbt
#scala #playframework #jar #sbt
Вопрос:
Я пытаюсь добавить Jep в Scala (2.11.8) Мой проект Play Framework (2.5.8). Насколько я могу судить, Sbt может видеть неуправляемый jar:
[play-scala] $ show unmanagedClasspath
[info] List(Attributed(/home/stondo/dev/git/play-dashboard-mongo/lib/jep.cpython-35m-x86_64-linux-gnu.so), Attributed(/home/stondo/dev/git/play-dashboard-mongo/lib/libjep.so), Attributed(/home/stondo/dev/git/play-dashboard-mongo/lib/jep-3.6.0.jar))
но когда я запускаю очень простой тест, он завершается неудачей:
[error] cannot create an instance for class IntegrationSpec
...
[error] CAUSED BY java.lang.UnsatisfiedLinkError: no jep in java.library.path
...
Позвольте мне упомянуть, что запуск scala -cp /path/to/myjar, а затем импорт Jep, работает:
scala -cp ./lib/jep-3.6.0.jar
scala> import jep.Jep
import jep.Jep
Есть идеи о том, что происходит?
Заранее спасибо
Комментарии:
1. И вы отметили это как [python], потому что?
2. просто потому, что Jep связан с python, но я понимаю ваше беспокойство, и, возможно, мне следовало подумать дважды. Удален тег Python.
Ответ №1:
Проблема не в том, что импорт не работает. Проблема в том, что невозможно загрузить собственную библиотеку. В отличие от библиотек Java, собственные библиотеки (jep.cpython-35m-x86_64-linux-gnu.so ) должен быть помещен в какой-либо каталог, указанный либо в переменной среды PATH, либо в системном свойстве «java.library.path».
Комментарии:
1. Спасибо человеку, что решил проблему! Я просто добавляю, чтобы добавить в свой build.sbt две строки: javaOptions в Test = «-Djava.library.path=/path/to/lib» javaOptions в Compile = «-Djava.library.path=/path/to/lib»
2. выше написано «пришлось добавить».