尽管包含了 Jar,但未找到 Java 类

标签 java linux docker docker-compose gurobi

我正在使用 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 。异常(exception)是代码中第一次提到 Gurobi。当我包含它时,我得到

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,并可以通过删除 jar 文件来调整应用程序,看看是否引用了预期的 jar...另外,您使用的是什么版本的库。我不熟悉这个库,但类似的错误可能是某个特定版本的本地错误,并且可能是 future 版本中修复的已知问题..为什么不尝试使用不同的版本?

关于尽管包含了 Jar,但未找到 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59958629/

相关文章:

linux - './configure, make, make install' 项目叫什么?

c - 从 C 程序将 sqlite3 表导出到文本文件

docker - 为什么Docker容器可以看到主机上的所有GPU设备?

docker - 如何取消设置Docker镜像标签?

docker - docker 构建之间的层不能共享

java.lang.NoSuchMethodException : android. content.res.Resources$Theme.rebase []

java - 跳过递归中不需要的返回

java - C# 相当于 Java 内存映射方法

java - 如何保存变量值?

c++ - 有序 QVector 中的二进制搜索