-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)

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];
4

1 に答える 1

0
  1. 例外のルートがあるため、完全なメイン メソッド コンテンツを投稿するとよいでしょう。

2a) 静的コードの場合: JVM にクラスがロードされているかどうか (または、どの JAR ライブラリのどのクラスか) を確認してください。- verbose オプションを使用して Java アプリケーションを実行します。

java -verbose ...

2b) 実行構成で、どのクラスとライブラリが構成されているかを確認します。そこに lib が含まれていない可能性があります(緑色の三角形の横にある右上隅)。「構成を編集」して、クラスパスを調べます。

2c) パッケージ管理システム (Maven など) を使用している場合は、理解しておくと役立ちます。

3a) JNI が関係しているため、JNI によって呼び出されたときにメソッドで "NoSuchMethodError" がスローされるため、呼び出されるクラスとメソッドが利用可能であることを確認してください。残念ながら、コードをデバッグするためにスニペットですべての情報を利用できるわけではありません。しかし、ここで何かが間違っている可能性が非常に高いです。

于 2020-11-06T15:50:49.163 に答える