Java lang NoSuchMethodError:Cwig的SwigDirector

问题描述

我第一次尝试将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)

知道在IntelliJ IDEA中项目的库设置以及Windows的环境变量PATH中都包含了所需的库ILOG.CP.jar和oplall.jar。我正在使用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];

解决方法

  1. 最好发布完整的Method的主要内容,因为有Exception的根。

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

java -verbose ...

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

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

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...