UnsatisfiedLinkError when 运行 SimGrid-Java example on Ubuntu

UnsatisfiedLinkError when running SimGrid-Java example on Ubuntu

此问题是针对熟悉 SimGrid 的人提出的。 从昨天开始我就一直很困惑,但我无法从 simgrid-java 启动任何示例。他们每个人都失败了,但有一个例外:

Exception in thread "main" java.lang.UnsatisfiedLinkError: /tmp/simgrid-java455637045639603622/libsimgrid.so: libboost_context.so.1.55.0: cannot open shared object file: No such file or directory
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1965)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1890)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1851)
    at java.lang.Runtime.load0(Runtime.java:795)
    at java.lang.System.load(System.java:1062)
    at org.simgrid.NativeLib.loadLib(NativeLib.java:116)
    at org.simgrid.NativeLib.nativeInit(NativeLib.java:35)
    at org.simgrid.NativeLib.nativeInit(NativeLib.java:26)
    at org.simgrid.msg.Msg.<clinit>(Msg.java:115)
    at async.AsyncTest.main(AsyncTest.java:14)

我该如何解决这个问题?

以下是我运行 SimGrid 示例所遵循的详细步骤-Java:

1) 我从 here

下载了 zip 文件

1a) 我已经安装了 libboost-context-dev,所以它是 libboost-context-dev is already the newest version.

2) 在examples-java目录下I 运行javac -classpath /home/ken/Downloads/simgrid.jar async/AsyncTest.java

3) 然后我运行java -classpath .:/home/ken/Downloads/simgrid.jar async/AsyncTest ../platforms/platform.xml ./async/asyncDeployment.xml

注:我用的是java version "1.7.0_95"

这是 SimGrid v3.12 版本中的一个 documented 错误。

正如 ysdx 所指出的,您应该在您的机器上手动安装 boost-context 库,此 jar 文件才能工作。这个库必须是 1.55 版本。如果您有 Ubuntu 或 Debian,只需在终端中输入: apt-get install libboost-context1.55.0

如果您的系统提示您的发行版中不存在这个包,那么这个版本的 jar 文件在您的机器上不可用。如果发生这种情况,请尝试从 Jenkins 上的夜间构建下载另一个版本的 jar 文件,as explained in the documentation