【发布时间】:2020-05-14 10:50:16
【问题描述】:
我将 Docker 与 https://hub.docker.com/r/bitnami/java 映像一起使用。我有我的 jar 文件 aa.jar,它使用 Gurobi。
我正在设置环境变量,以便可以找到 Gurobi。
GUROBI_HOME=/code/gurobi811/linux64
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GUROBI_HOME}/lib
GRB_LICENSE_FILE=/code/gurobi.lic
PATH=${PATH}:/opt/bitnami/java/bin:/opt/bitnami/java/lib:/opt/bitnami/java:/bin:/usr/bin/:/code/gurobi811/linux64/bin:/code/bin
JAVA_HOME=/opt/bitnami/java
当我运行代码时,我还将 gurobi.jar 包含在类路径中
java -cp gurobi.jar -jar aa.jar evaluate
这在一定程度上是有效的。当我不包含类路径时,我收到错误Exception in thread "main" java.lang.NoClassDefFoundError: gurobi/GRBException。例外是代码中第一次提到 Gurobi。当我包含它时,我得到 p>
Exception in thread "main" java.lang.NoClassDefFoundError: gurobi/GRBExpr
java_1 | at Alg.evaluate.main(evaluate.java:44)
java_1 | Caused by: java.lang.ClassNotFoundException: gurobi.GRBExpr
我不确定为什么这不起作用,因为所有文件都应该包含在 -cp 参数包含的 jar 中。
另外我只有 Gurobi 学术许可证,所以我不能去 Gurobi 官方支持。
【问题讨论】:
-
-jar使java忽略-cp。只考虑 jar 文件 META-INF 中定义的类路径! -
我认为其他问题不一样,这里的问题是环境变量
标签: java linux docker docker-compose gurobi