在.bashrc中写道:

PYTHONPATH="${PYTHONPATH}:$Home/local/lib/python2.7/site-packages/"
export PYTHONPATH

LD_LIBRARY_PATH="$Home/local/lib/"
export LD_LIBRARY_PATH

CLASSPATH="/home/stud/qe09kyvu/local/lib/liblpsolve55j.so"
export CLASSPATH


当我尝试运行此命令时:

java -cp .:../lib/lpsolve55j.jar -Djava.library.path=../liblpsolve55j.so Demo


我收到以下错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no lpsolve55j in java.library.path


但是我不明白这个错误,因为在..中有liblpsolve55j.so

最佳答案

要运行lpsolver,您需要做两件事。


特定于平台/操作系统的二进制文件,如下所示,您应将它们保留在相应的库路径中或导出相应的环境特定的属性


Windows的libsolve55.dll-您应该将这些文件复制到system32或将此路径设置为LD_LIBRARY_PATH环境变量
对于Linux的libsolve55.so-您应该将这些文件复制到/ usr / local / lib或将此路径设置为LD_LIBRARY_PATH环境变量
用于Mac的libsolve55.dylib-您应该将这些文件复制到/ usr / local / lib或将此路径设置为LD_LIBRARY_PATH环境变量DYLD_FALLBACK_LIBRARY_PATH

特定于语言的包装程序,用于调用上述二进制文件中存在的lp_solver方法。对于Java,您需要liblpsolve55j.jnilib和lpsolve5j.o文件。它们的位置应该添加到java.library.path或将它们添加到上述特定于平台的环境变量中。


在您的情况下,似乎已经在步骤2中完成了所有工作,但是缺少了步骤1。对于步骤1,可以将路径(而不是环境变量)包含在您要通过的java.library.path中。我在下面给你一个例子。


  $ java -cp ./Demo.jar:../lib/lpsolve55j.jar -Djava.library.path = / Users / santhoshgandhe / mac_lpsolver / lp_solve_5.5 / lpsolve55 / bin / osx64:/ Users / santhoshgandhe / mac_lpsolver / lp_solve_5 .5_java / lib / mac演示

10-06 07:11