Я пытаюсь импортировать Cplex в проект Maven (используя Ubuntu 16.04).
Поэтому я добавил cplex.jar в репозиторий maven с помощью этой команды: mvn install:install-file -DgroupId=cplex -DartifactId=cplex -Dversion=12.8 -Dpackaging=jar -Dfile=/cplex/install/dir/CPLEX_Studio128/cplex/lib/cplex.jar
Я добавилзависимость от моего pom.xml:
<dependency>
<groupId>cplex</groupId>
<artifactId>cplex</artifactId>
<version>12.8</version>
</dependency>
Я добавил ссылку на Cplex Native Library (.so файлы) на LD_LIBRARY_PATH: export LD_LIBRARY_PATH="/cplex/install/dir/CPLEX_Studio128/cplex/bin/x86-64_linux"
Но когда я бегумой проект maven с: mvn exec:java -Dexec.mainClass="main.main"
Я получил следующую ошибку: java.lang.IncompatibleClassChangeError: Реализация класса
Я уже проверил этот вопрос но я не понимаю, в этом случае, какие несовместимые двоичные изменения могут быть сделаны.
Возможно ли, что существуют некоторые "несовместимые двоичные изменения"?И если это не так, есть ли другое объяснение этой ошибки, кроме «несовместимых двоичных изменений»?
Редактировать
Я также использую библиотеку OPL (такая же установка, как в Cplexбиблиотека), и у меня есть только версия 12.8 Cplex и Oplall в моей системе.
Я попытался очистить и собрать снова, но получил ту же ошибку.
Это код, который я пытаюсь запустить(в ModelFileEvaluator.java):
IloOplFactory.setDebugMode(true);
IloOplFactory oplF = new IloOplFactory();
IloOplErrorHandler errHandler = oplF.createOplErrorHandler();
IloOplModelSource modelSource = oplF.createOplModelSource(fileName);
IloOplSettings settings = oplF.createOplSettings(errHandler);
IloOplModelDefinition def = oplF.createOplModelDefinition(modelSource,settings);
IloCplex cplex = oplF.createCplex();
И это полная обратная трассировка:
java.lang.IncompatibleClassChangeError: Implementing class
at java.lang.ClassLoader.defineClass1(java.base@9-internal/Native Method)
at java.lang.ClassLoader.defineClass(java.base@9-internal/ClassLoader.java:939)
at java.security.SecureClassLoader.defineClass(java.base@9-internal/SecureClassLoader.java:152)
at java.net.URLClassLoader.defineClass(java.base@9-internal/URLClassLoader.java:463)
at java.net.URLClassLoader.access$100(java.base@9-internal/URLClassLoader.java:76)
at java.net.URLClassLoader$1.run(java.base@9-internal/URLClassLoader.java:371)
at java.net.URLClassLoader$1.run(java.base@9-internal/URLClassLoader.java:365)
at java.security.AccessController.doPrivileged(java.base@9-internal/Native Method)
at java.net.URLClassLoader.findClass(java.base@9-internal/URLClassLoader.java:364)
at java.lang.ClassLoader.loadClass(java.base@9-internal/ClassLoader.java:486)
at java.lang.ClassLoader.loadClass(java.base@9-internal/ClassLoader.java:419)
at java.lang.ClassLoader.defineClass1(java.base@9-internal/Native Method)
at java.lang.ClassLoader.defineClass(java.base@9-internal/ClassLoader.java:939)
at java.security.SecureClassLoader.defineClass(java.base@9-internal/SecureClassLoader.java:152)
at java.net.URLClassLoader.defineClass(java.base@9-internal/URLClassLoader.java:463)
at java.net.URLClassLoader.access$100(java.base@9-internal/URLClassLoader.java:76)
at java.net.URLClassLoader$1.run(java.base@9-internal/URLClassLoader.java:371)
at java.net.URLClassLoader$1.run(java.base@9-internal/URLClassLoader.java:365)
at java.security.AccessController.doPrivileged(java.base@9-internal/Native Method)
at java.net.URLClassLoader.findClass(java.base@9-internal/URLClassLoader.java:364)
at java.lang.ClassLoader.loadClass(java.base@9-internal/ClassLoader.java:486)
at java.lang.ClassLoader.loadClass(java.base@9-internal/ClassLoader.java:419)
at ilog.opl.IloOplFactory.createCplex(IloOplFactory.java:227)
at main.ModelFileEvaluator.testFile(ModelFileEvaluator.java:86)
at main.ModelFileEvaluator.main(ModelFileEvaluator.java:53)
at sun.reflect.NativeMethodAccessorImpl.invoke0(java.base@9-internal/Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(java.base@9-internal/NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(java.base@9-internal/DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(java.base@9-internal/Method.java:531)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:282)
at java.lang.Thread.run(java.base@9-internal/Thread.java:804)