在library.path

时间:2016-02-16 15:23:02

标签: scala akka spray

我有一个根据this example的Scala.js Web应用程序,我正在尝试调用第三方Java库。

我收到一个奇怪的错误,表示缺少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 ++ Redistributables或将fork in run := true添加到我的 build.sbt - 但没有成功......

2 个答案:

答案 0 :(得分:0)

尝试添加

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

build.sbt

的第29行

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

更新:我下载了您的项目(分支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吗?

答案 1 :(得分:0)

您获得的错误是运行时错误。所以,我认为你与构建路径无关。如果您在Windows中工作,请尝试将jansi.dll安装到任何java.library.path目录中;例如c:/ windows / system32。我想这不是最好的解决方法,但在处理3个小时后找到改变运行时路径以包含jansi.jar文件的方法后,它对我来说很好。