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。
此问题是针对熟悉 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。