【问题标题】:Java lang NoSuchMethodError : SwigDirector for cplexJava lang NoSuchMethodError:用于 cplex 的 SwigDirector
【发布时间】:2020-11-06 15:14:23
【问题描述】:

对于我第一次尝试将 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];

【问题讨论】:

    标签: java wrapper cplex constraint-programming cp-optimizer


    【解决方案1】:
    1. 最好发布您完整的主要方法内容,因为您的异常有根。

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

    java -verbose ...
    

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

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

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

    【讨论】:

    • 我删除了我所有的库并将它们全部放回去,然后一个接一个。我得到了与下一次我只保留库 oplall.jar 以及 cpoptimizer 和 opl 的本机库位置相同的错误。错误如下:线程“main”中的异常java.lang.RuntimeException:内部错误:ilog.concert.IloModelerImpl.prod(IloModelerImpl)的ilog.concert.cppimpl.IloConcertUtils.ToCppIloIntExpr(IloConcertUtils.java:342)错误.java:1142) at buffPos.main(buffPos.java:90) PS:我不使用 Maven,我的类路径中有我的库的 jar
    • 所以我修改了代码中的一个 prod 函数,将 ilointvar 加总为 ilonumvar,现在我收到错误:线程“main”java.lang.RuntimeException 中的异常:内部错误(请通知 IBM ) 在 ilog.concert.IloModelerImpl.prod(IloModelerImpl.java:797) 在 ilog.concert.cppimpl.concert_wrap.operator_prod(concert_wrap.java:227) 在 ilog.concert.cppimpl.concert_wrapJNI.operator_prod__SWIG_8(Native Method)。 Concert.IloModelerImpl.prod(IloModelerImpl.java:808) 在 buffPos.main(buffPos.java:89)
    • 你应该帮助别人来帮助你。如果您发布一个完整的运行示例,可能会有所帮助。
    猜你喜欢
    • 2020-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多