scala воспроизводит неуправляемый jar, добавленный, но импорт не работает

#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. выше написано «пришлось добавить».