2016-02-16 1 views
1

У меня есть веб-приложение Scala.js в соответствии с this example, и я пытаюсь вызвать стороннюю библиотеку Java.Нет jansi в library.path

Я получаю странную ошибку, указывающую, что отсутствует jansi lib, но я добавил jansi-1.11.jar на свой путь.

exampleJVM [INFO] [02/16/2016 16:14:56.331] [default-akka.actor.default-dispatcher-2] [akka://default/user/IO-HTTP/listener-0] Bound to /0.0.0.0:8080 
    exampleJVM[ERROR] Uncaught error from thread [default-akka.actor.default-dispatcher-3] shutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled for ActorSystem[default] 
    exampleJVM [ERROR] [02/16/2016 16:14:58.694] [default-akka.actor.default-dispatcher-3] [ActorSystem(default)] Uncaught error from thread [default-akka.actor.default-dispatcher-3] shutting 
    down JVM since 'akka.jvm-exit-on-fatal-error' is enabled 
    exampleJVM[ERROR] java.lang.UnsatisfiedLinkError: Could not load library. Reasons: [no jansi in java.library.path] 
    exampleJVM[ERROR]  at org.fusesource.hawtjni.runtime.Library.doLoad(Library.java:182) 
    exampleJVM java.lang.UnsatisfiedLinkError: Could not load library. Reasons: [no jansi in java.library.path] 
    exampleJVM[ERROR]  at org.fusesource.hawtjni.runtime.Library.load(Library.java:140) 
    exampleJVM[ERROR]  at org.fusesource.jansi.internal.Kernel32.<clinit>(Kernel32.java:37) 
    exampleJVM  at org.fusesource.hawtjni.runtime.Library.doLoad(Library.java:182) 
    exampleJVM[ERROR]  at org.fusesource.jansi.WindowsAnsiOutputStream.<clinit>(WindowsAnsiOutputStream.java:52) 
    exampleJVM[ERROR]  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    exampleJVM  at org.fusesource.hawtjni.runtime.Library.load(Library.java:140) 
    exampleJVM[ERROR]  at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    exampleJVM  at org.fusesource.jansi.internal.Kernel32.<clinit>(Kernel32.java:37) 
    exampleJVM[ERROR]  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    exampleJVM  at org.fusesource.jansi.WindowsAnsiOutputStream.<clinit>(WindowsAnsiOutputStream.java:52) 
    exampleJVM[ERROR]  at java.lang.reflect.Constructor.newInstance(Constructor.java:408) 
    exampleJVM  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    exampleJVM[ERROR]  at org.apache.logging.log4j.core.appender.ConsoleAppender.getOutputStream(ConsoleAppender.java:198) 
    exampleJVM  at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 

Я попробовал несколько вещей, которые были предложены где-то ... Я установил Visual Studio C++ Вторично или добавлены fork in run := true к моему build.sbt - но без успеха ...

+1

Это действительно не имеет ничего общего с scala.js, так как это серверная библиотека. Возможно, вам захочется попросить сообщество akka/akka Gitter ... –

+0

Не могли бы вы объяснить, как вы добавили jansi-1.11.jar на свой путь? – gzm0

+0

Я добавил его к моему build.sbt, как предложил эксперт. Кроме того, я добавил его в проект Buildpath моего проекта eclipse. –

ответ

0

Попробуйте добавить

"org.fusesource.jansi" % "jansi" % "1.11", 

к линии 29 из вашей build.sbt

https://github.com/lihaoyi/workbench-example-app/blob/autowire/build.sbt#L29

UPDATE: Я скачал ваш проект (филиал autowire), добавлена ​​зависимость к build.sbt и добавлены следующие строки example.Server.main:

import org.fusesource.jansi.AnsiConsole 
import org.fusesource.jansi.Ansi._ 
import org.fusesource.jansi.Ansi.Color._ 

AnsiConsole.systemInstall() 
println(ansi().eraseScreen().fg(RED).a("Hello").fg(GREEN).a(" World").reset()) 

это работает для меня. Не могли бы вы загрузить свою версию кода в github?

+0

Это не работает. Я все равно получаю точно такое же сообщение об ошибке .... –

+0

Я обновил ответ. Я думаю, что есть что-то в вашей версии кода. – expert

+0

Хм, я добавил ваш код, и «Hello World» напечатан на консоли. Однако, когда я вызываю внешнюю (Java) библиотеку, появляется такое же сообщение об ошибке. Во внешней lib ошибка вызвана 'org.apache.logging.log4j'. Внешняя библиотека ищет jansi в другом libpath? –

0

Ошибка, которую вы получаете, является ошибкой во время выполнения. Итак, я думаю, вы не имеете никакого отношения к пути сборки. Если вы работаете в Windows, попробуйте установить jansi.dll в любой каталог java.library.path; таких как c:/windows/system32. Я полагаю, что это не лучший способ решить, но он отлично справился со мной после работы через 3 часа, чтобы найти способ изменить путь выполнения, чтобы включить файл jansi.jar.

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