我试图将scpsolver和gplk jar文件用于类项目,但给出的示例给出了一个空指针错误。
LinearProgram lp = new LinearProgram(new double[]{5.0,10.0});
lp.addConstraint(new LinearBiggerThanEqualsConstraint(new double[]{3.0,1.0}, 8.0, "c1"));
lp.addConstraint(new LinearBiggerThanEqualsConstraint(new double[]{0.0,4.0}, 4.0, "c2"));
lp.addConstraint(new LinearSmallerThanEqualsConstraint(new double[]{2.0,0.0}, 2.0, "c3"));
lp.setMinProblem(true);
LinearProgramSolver solver = SolverFactory.newDefault();
double[] sol = solver.solve(lp);
我曾尝试使用scpsolver的google示例,但一直无法找到。任何人都可以为scpsolver发布一个工作示例吗?
答案 0 :(得分:2)
如果您的例外是针对LinearProgramSolver(我有同样的问题),它的newDefault()可能无法自动找到基础GLPKSolverPack.jar。请检查以下
确保您在类路径中列出了GLPKSolverPack.jar。我猜你已经检查了这个。
确保您为项目使用32位JDK版本。 64位JDK存在一个已知问题,即SCP解算器无法根据其网页检测底层库。
SCPSolver WebSource: 如果在Windows下出现错误" DEBUG:找不到所需的库:xxxxxxxx_x64":我们目前无法访问64位Windows机器,因此我们无法提供64位库解算器包。解决方案:如果安装了32位x86 JDK,您仍然可以在Windows下使用SCPSolver!
这是我的问题,只要我将项目指向它工作的32位JDK
答案 1 :(得分:-1)
空指针异常意味着您有一个变量,其值被赋值为null,程序正在尝试使用其值。 例如:
Integer myInteger = null;
int n = myInteger.intValue();
因此,如果您尝试获取空值,请检查您的代码。