java - 尽管包含了 Jar,但未找到 Java 类
问题描述
我将 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。当我包含它时,我得到
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...另外,您使用的是什么版本的库。我不熟悉这个库,但类似的错误可能是一个特定版本的本地错误,并且可能是未来版本中修复的已知问题。你为什么不尝试使用不同的版本?
推荐阅读
- c# - 包装多种类型和组合模式的包装类
- typescript - 如何在我的 vuejs 应用程序中使用从外部 cdn 加载的 bing 地图?
- javascript - 要解密的数据长度无效。用 Javascript 加密并用 c# 解密
- sql - 无法绑定多部分标识符“dbo.function_namee”
- php - 如何在 laravel 5.7 中以多视图传递数组?
- python - 通过从两个进程写入来损坏 txt 文件
- javascript - 如何监听元素上的“特定”动画结尾?
- javascript - Fullcalendar 日期范围未显示今年已过的事件
- go - golang如何生成Diffie-Hellman参数
- php - 使用属性值作为方法名 php 按名称调用方法