Java CPLEX Concert UnsatisfiedLinkError
Java CPLEX Concert UnsatisfiedLinkError
我正在尝试在 java 中使用 cplex 在 Ubuntu 16.4
上使用 eclipse IDE
我收到如下异常“UnsatisfiedLinkError”
有人知道如何克服这个异常吗?
Exception in thread "main" java.lang.UnsatisfiedLinkError: 'void ilog.concert.cppimpl.concert_wrapJNI.swig_module_init()'
at ilog.concert.cppimpl.concert_wrapJNI.swig_module_init(Native Method)
at ilog.concert.cppimpl.concert_wrapJNI.<clinit>(concert_wrapJNI.java:1619)
at ilog.concert.cppimpl.IloEnv.<init>(IloEnv.java:49)
at ilog.opl.IloOplFactory.<init>(IloOplFactory.java:84)
at cplex.Mulprod.main(Mulprod.java:15)
我正在使用 ensta-paris Java version of mulprod.cpp of OPL distrib
提供的以下示例
import ilog.concert.*;
import ilog.opl.*;
import ilog.opl.IloCplex;
public class Mulprod {
static final String DATADIR = ".";
static public void main(String[] args) throws Exception {
int status = 127;
try {
IloOplFactory.setDebugMode(true);
IloOplFactory oplF = new IloOplFactory();
IloOplErrorHandler errHandler = oplF.createOplErrorHandler();
IloOplModelSource modelSource = oplF.createOplModelSource(DATADIR + "/mulprod.mod");
IloOplSettings settings = oplF.createOplSettings(errHandler);
IloOplModelDefinition def = oplF.createOplModelDefinition(modelSource, settings);
IloCplex cplex = oplF.createCplex();
cplex.setOut(null);
IloOplModel opl = oplF.createOplModel(def, cplex);
IloOplDataSource dataSource = oplF.createOplDataSource(DATADIR + "/mulprod.dat");
opl.addDataSource(dataSource);
opl.generate();
if (cplex.solve()) {
System.out.println("OBJECTI " + opl.getCplex().getObjValue());
opl.postProcess();
opl.printSolution(System.out);
} else {
System.out.println("No solution!");
}
oplF.end();
status = 0;
} catch (IloOplException ex) {
System.err.println("### OPL excepti " + ex.getMessage());
ex.printStackTrace();
status = 2;
} catch (IloException ex) {
System.err.println("### CONCERT excepti " + ex.getMessage());
ex.printStackTrace();
status = 3;
} catch (Exception ex) {
System.err.println("### UNEXPECTED UNKNOWN ERROR ...");
ex.printStackTrace();
status = 4;
}
System.exit(status);
}
}
我在 运行 配置中的 VM 参数是
-Djava.library.path=[cplexStudioPath]/cplex/bin/x86-64_linux:[cplexStudioPath]/opl/bin/x86-64_linux
您还必须设置 LD_LIBRARY_PATH
环境变量,使其包含 OPL 目录(您也在 java.library.path
中指定)。
另请注意,不需要在 java.library.path
中指定 CPLEX 目录。我建议删除它,因为您不希望从这个地方加载库。您只需要 OPL 目录中的库(所需的 CPLEX 库也在那里)。
我正在尝试在 java 中使用 cplex 在 Ubuntu 16.4
上使用 eclipse IDE我收到如下异常“UnsatisfiedLinkError” 有人知道如何克服这个异常吗?
Exception in thread "main" java.lang.UnsatisfiedLinkError: 'void ilog.concert.cppimpl.concert_wrapJNI.swig_module_init()'
at ilog.concert.cppimpl.concert_wrapJNI.swig_module_init(Native Method)
at ilog.concert.cppimpl.concert_wrapJNI.<clinit>(concert_wrapJNI.java:1619)
at ilog.concert.cppimpl.IloEnv.<init>(IloEnv.java:49)
at ilog.opl.IloOplFactory.<init>(IloOplFactory.java:84)
at cplex.Mulprod.main(Mulprod.java:15)
我正在使用 ensta-paris Java version of mulprod.cpp of OPL distrib
提供的以下示例import ilog.concert.*;
import ilog.opl.*;
import ilog.opl.IloCplex;
public class Mulprod {
static final String DATADIR = ".";
static public void main(String[] args) throws Exception {
int status = 127;
try {
IloOplFactory.setDebugMode(true);
IloOplFactory oplF = new IloOplFactory();
IloOplErrorHandler errHandler = oplF.createOplErrorHandler();
IloOplModelSource modelSource = oplF.createOplModelSource(DATADIR + "/mulprod.mod");
IloOplSettings settings = oplF.createOplSettings(errHandler);
IloOplModelDefinition def = oplF.createOplModelDefinition(modelSource, settings);
IloCplex cplex = oplF.createCplex();
cplex.setOut(null);
IloOplModel opl = oplF.createOplModel(def, cplex);
IloOplDataSource dataSource = oplF.createOplDataSource(DATADIR + "/mulprod.dat");
opl.addDataSource(dataSource);
opl.generate();
if (cplex.solve()) {
System.out.println("OBJECTI " + opl.getCplex().getObjValue());
opl.postProcess();
opl.printSolution(System.out);
} else {
System.out.println("No solution!");
}
oplF.end();
status = 0;
} catch (IloOplException ex) {
System.err.println("### OPL excepti " + ex.getMessage());
ex.printStackTrace();
status = 2;
} catch (IloException ex) {
System.err.println("### CONCERT excepti " + ex.getMessage());
ex.printStackTrace();
status = 3;
} catch (Exception ex) {
System.err.println("### UNEXPECTED UNKNOWN ERROR ...");
ex.printStackTrace();
status = 4;
}
System.exit(status);
}
}
我在 运行 配置中的 VM 参数是
-Djava.library.path=[cplexStudioPath]/cplex/bin/x86-64_linux:[cplexStudioPath]/opl/bin/x86-64_linux
您还必须设置 LD_LIBRARY_PATH
环境变量,使其包含 OPL 目录(您也在 java.library.path
中指定)。
另请注意,不需要在 java.library.path
中指定 CPLEX 目录。我建议删除它,因为您不希望从这个地方加载库。您只需要 OPL 目录中的库(所需的 CPLEX 库也在那里)。