适用:JDK 1.8 + Gurobi 13(已验证 gurobi.jar 字节码版本为 Java 8,无需升级 JDK)
假设 Gurobi 装在
C:\gurobi1300\win64(默认路径;若不同请替换)
第 0 步:确认前提
-
已安装 Gurobi 13,目录里有
C:\gurobi1300\win64\lib\gurobi.jar。 -
已激活 license(有
gurobi.lic文件)。没有的话先用命令行激活:C:\gurobi1300\win64\bin\grbgetkey.exe <license-id>
第 1 步:新建 / 打开项目
- 新建 :File → New → Project → 选「Java」,SDK 选你的 Java 8,Next → 起个项目名(比如
GurobiTest)→ Create。 - 打开已有 :File → Open → 选择放
.java文件的文件夹。
第 2 步:设置 Project SDK 为 Java 8
File → Project Structure...(快捷键 Ctrl+Alt+Shift+S)
- 左侧选 Project :
- SDK :选 Java 1.8(若下拉没有,点
Add SDK → JDK,定位到 Java 8 安装目录)。 - Language level :选
8。
- SDK :选 Java 1.8(若下拉没有,点
- 点 OK。
第 3 步:把 gurobi.jar 加进依赖(关键)
仍在 File → Project Structure...:
- 左侧选 Modules → 右侧 Dependencies 标签页。
- 点下方
+→ JARs or directories...。 - 选择
C:\gurobi1300\win64\lib\gurobi.jar→ 确定。 - 看到
gurobi.jar出现在依赖列表里 → 点 OK。
此时代码里写 import com.gurobi.gurobi.*; 应该不再报红。
⚠️ 包名是
com.gurobi.gurobi(Gurobi 11/12/13),不是旧教程的gurobi。
第 4 步:配置运行(最关键,决定能不能跑起来)
Run → Edit Configurations...
-
点左上
+→ 选 Application。 -
Name :随便,比如
Run GurobiTest。 -
Main class :点一下选
GurobiTest(或你的主类)。 -
点上方 Modify options (或
Alt+M)→ 勾选 VM options 和 Environment variables,让这两个输入框显示出来。 -
填入:
VM options:
-Djava.library.path=C:/gurobi1300/win64/bin(用正斜杠
/,避免反斜杠转义问题)Environment variables:
GRB_LICENSE_FILE=C:/gurobi1300/win64/bin/gurobi.lic(这是 license 文件的真实路径;若 license 已放在用户主目录,这一项可省略)
-
点 OK 保存。
第 5 步:运行验证
把下面的代码存为 GurobiTest.java(放在 src 下),点右上绿色三角运行:
java
import com.gurobi.gurobi.*;
public class GurobiTest {
public static void main(String[] args) {
try {
GRBEnv env = new GRBEnv("gurobi_test.log");
GRBModel model = new GRBModel(env);
GRBVar x = model.addVar(0, 1, 0, GRB.BINARY, "x");
GRBVar y = model.addVar(0, 1, 0, GRB.BINARY, "y");
GRBVar z = model.addVar(0, 1, 0, GRB.BINARY, "z");
GRBLinExpr obj = new GRBLinExpr();
obj.addTerm(1.0, x); obj.addTerm(1.0, y); obj.addTerm(2.0, z);
model.setObjective(obj, GRB.MAXIMIZE);
GRBLinExpr c1 = new GRBLinExpr();
c1.addTerm(1.0, x); c1.addTerm(2.0, y); c1.addTerm(3.0, z);
model.addConstr(c1, GRB.LESS_EQUAL, 4.0, "c1");
GRBLinExpr c2 = new GRBLinExpr();
c2.addTerm(1.0, x); c2.addTerm(1.0, y);
model.addConstr(c2, GRB.GREATER_EQUAL, 1.0, "c2");
model.optimize();
System.out.println("Status : " + model.get(GRB.IntAttr.Status));
System.out.println("Objective : " + model.get(GRB.DoubleAttr.ObjVal));
System.out.println("x=" + x.get(GRB.DoubleAttr.X)
+ " y=" + y.get(GRB.DoubleAttr.X)
+ " z=" + z.get(GRB.DoubleAttr.X));
model.dispose();
env.dispose();
} catch (GRBException e) {
System.out.println("Gurobi error: code=" + e.getErrorCode()
+ ", msg=" + e.getMessage());
}
}
}
看到输出 Objective : 3.0 且 x=1.0 y=0.0 z=1.0 就成功了。
常见报错对照
| 报错 | 原因 | 解决 |
|---|---|---|
package com.gurobi.gurobi does not exist |
第 3 步 jar 没加对 | 重新加 gurobi.jar 到 Dependencies |
cannot find symbol / 红色波浪线 |
同上,或缺包名 | 检查 import 和依赖 |
No Gurobi license found |
license 没找到 | 第 4 步的 GRB_LICENSE_FILE 填对路径;或把 gurobi.lic 复制到 C:\Users\<用户名>\ |
UnsatisfiedLinkError: ...gurobi...dll |
第 4 步 VM options 没配 | 补上 -Djava.library.path=C:/gurobi1300/win64/bin |
Unsupported major.minor version 52.0 之类 |
JDK 太旧 | Java 8 正好是 52,不会有此问题;若出现说明用了更低版本,升级到 Java 8+ |
一句话总结
IDEA 里配 Gurobi = 设 JDK → 加 gurobi.jar → VM options 填 java.library.path → 环境变量填 GRB_LICENSE_FILE。这四样齐了就能跑。