-1

对于我第一次尝试将 CP Optimizer 与 java 一起使用,当我运行我的程序时,我收到以下错误消息:

Exception in thread "main" java.lang.NoSuchMethodError: SwigDirector_IloIntValueEvalWrapper_eval
at ilog.cp.cppimpl.cp_wrapJNI.swig_module_init(Native Method)
at ilog.cp.cppimpl.cp_wrapJNI.<clinit>(cp_wrapJNI.java:802)
at ilog.cp.cppimpl.IloCP.<init>(IloCP.java:109)
at ilog.cp.IloCP.<init>(IloCP.java:128)
at ilog.cp.IloCP.<init>(IloCP.java:120)
at buffPos.main(buffPos.java:73)

知道我将所需的库 ILOG.CP.jar 和 oplall.jar 包含在 IntelliJ IDEA 中我的项目的库设置中以及我的 windows 的环境变量 PATH 中。我正在使用 jdk 15.0.1

我的程序中使用 iloIntVar 的部分是:

// define new model
            IloCP modelPos = new IloCP();

            // variables
            IloIntVar[][] x = new IloIntVar[ligne + 1][];

            for (int i = 0; i < ligne + 1; i++) {
                x[i] = modelPos.boolVarArray(colone + 1);
            }

            IloIntVar[][] a = new IloIntVar[ligne + 1][colone + 1];
4

1 回答 1

0
  1. 最好发布您完整的主要方法内容,因为您的异常有根。

2a)如果是静态代码:尝试查看类是否已加载到 JVM 中(甚至是哪个 JAR lib 中的哪个类)。使用 -verbose 选项运行您的 Java 应用程序:

java -verbose ...

2b) 在运行配置中检查已配置哪些类和库。也许该库不包含在那里(绿色运行三角形旁边的右上角)。“编辑配置”并查看类路径。

2c)如果您使用任何包控制系统(Maven 等),这将有助于了解

3a) 由于涉及到 JNI - 确保调用的类和方法可用,因为当 JNI 调用时,在 JVM 中找不到方法时抛出“NoSuchMethodError”。不幸的是,您的代码段中并非所有信息都可用于调试您的代码。但这很可能在这里被称为错误。

于 2020-11-06T15:50:49.163 回答