我正在尝试在Java项目中使用Gurobi 8.1。我在.zshrc
上设置了以下环境变量:
export GUROBI_HOME="/home/user/tool/gurobi811/linux64"
export PATH="${PATH}:${GUROBI_HOME}/bin"
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${GUROBI_HOME}/lib"
export GRB_LICENSE_FILE="/home/user/tool/gurobi811/gurobi.lic"
这是根据以下链接完成的:Software Installation Guide 和Setting environment variables。这使我能够成功运行优化器的交互式外壳。
但是,尝试在Netbeans项目中使用优化器时出现以下错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no GurobiJni81 in java.library.path: [/usr/java/packages/lib, /usr/lib64, /lib64, /lib, /usr/lib]
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2660)
at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:829)
at java.base/java.lang.System.loadLibrary(System.java:1867)
at gurobi.GurobiJni.<clinit>(GurobiJni.java:261)
at gurobi.GRBEnv.<init>(GRBEnv.java:56)
at br.gurobi.test.main.Main.main(Main.java:31)
/home/user/project/nbproject/build-impl.xml:1328: The following error occurred while executing this line:
/home/user/project/nbproject/build-impl.xml:948: Java returned: 1
BUILD FAILED (total time: 0 seconds)
如果我使用-Djava.library.path=/path/to/lib
选项(as used here),则会收到另一个错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: /home/user/tool/gurobi811/linux64/lib/libGurobiJni81.so: libgurobi81.so: cannot open shared object file: No such file or directory
at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2430)
at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2487)
at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2684)
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2649)
at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:829)
at java.base/java.lang.System.loadLibrary(System.java:1867)
at gurobi.GurobiJni.<clinit>(GurobiJni.java:261)
at gurobi.GRBEnv.<init>(GRBEnv.java:56)
at br.gurobi.test.main.Main.main(Main.java:31)
/home/user/project/nbproject/build-impl.xml:1328: The following error occurred while executing this line:
/home/user/project/nbproject/build-impl.xml:948: Java returned: 1
BUILD FAILED (total time: 0 seconds)
我已经将gurobi.jar
和gurobi-javadoc.jar
添加到了项目编译时库中。我没有在Apache Netbeans 11中找到定义环境变量的位置。
答案 0 :(得分:1)
我从未发现使用较新的Netbeans版本在项目/目标级别设置环境变量的“好”方法。虽然有效,但一种黑客正在将LD_LIBRARY_PATH
设置全局地添加到netbeans ,即,编辑<your netbeans install directory>/etc/netbeans.conf
以包括该行
export LD_LIBRARY_PATH=<absolute path to the gurobi lib dir>
也可以在操作系统级别上全局设置此类环境变量,但这更加丑陋。
一个大概更好的解决方案是在Netbeans项目中使用一个自定义的Ant脚本来设置适当的环境变量,但是由于上述破解足以满足我的目的,因此我从此不再赘述。
答案 1 :(得分:0)
我可以通过从终端(已经设置了所有用户变量的终端)执行Netbeans来设法运行优化器。
不过,我将等待一个答案,该答案显示了如何直接在Netbeans上设置环境变量。
答案 2 :(得分:0)
我在IntelliJ上遇到了同样的问题,这是我的解决方案:只需从终端运行IDE,然后尝试运行程序即可。据我所知,将加载 .zshrc (在我的情况下为.bashrc文件,因为我使用Ubuntu的情况下)中定义的全局环境变量,程序将正常工作!