Скомпилируйте Cplex на Java в Linux

Я пытаюсь скомпилировать свой файл file.java с проблемой оптимизации с нотацией CPLEX в кластере, который использует Linux (и я пользователь Windows) и используемый (через приложение для отправки команд)

javac file.java

и я получаю такие ошибки, как:

file.java:4: error: package ilog.concert does not exist
import ilog.concert.IloException;
                   ^
file.java:5: error: package ilog.concert does not exist
import ilog.concert.IloLinearNumExpr;
                   ^
file.java:6: error: package ilog.concert does not exist
import ilog.concert.IloNumVar;
                   ^
file.java:7: error: package ilog.concert does not exist
import ilog.concert.IloNumVarType;
                   ^
file.java:8: error: package ilog.concert does not exist
import ilog.concert.IloRange;
                   ^
file.java:9: error: package ilog.cplex does not exist
import ilog.cplex.IloCplex;

Таким образом, он не распознает библиотеку (и, следовательно, импорт), которая предположительно находится в этом сообщении в кластере.

/home/apps/cplex/12.6.1/cplex/lib/cplex.jar

У меня вопрос, нужно ли мне что-то добавлять в командную строку javac или не подключены пути (например, int Windows)?


person Emaneitron    schedule 21.07.2015    source источник


Ответы (2)


Используйте аргумент командной строки -cp, чтобы добавить файл jar в путь к классам времени компиляции. Вам также нужно будет указать путь к классам при запуске кода.

$ javac -cp /home/apps/cplex/12.6.1/cplex/lib/cplex.jar file.java
$ java -cp /home/apps/cplex/12.6.1/cplex/lib/cplex.jar:. file

В идеале, начните использовать пакеты Java, а не пакет по умолчанию, и следуйте соглашениям об именах Java.

Кроме того, если вы не знакомы с Java для начала, я бы прочитал несколько руководств и т. Д., Прежде чем вы начнете пытаться запустить что-то сложное, подобное этому.

person Jon Skeet    schedule 21.07.2015
comment
, я пробовал это ... он компилируется, но когда я делаю вторую строку, я получаю эту ошибку ... java.lang.UnsatisfiedLinkError: нет cplex1261 в java.library.path java.library.path должен указывать на каталог, содержащий общая библиотека CPLEX попытается вызвать java с помощью java -Djava.library.path = ... Исключение в основном потоке java.lang.UnsatisfiedLinkError: ilog.cplex.Cplex.CPXopenCPLEX ([I) J. Я действительно не знаю, что не так ... какие-нибудь рекомендации? - person Emaneitron; 23.07.2015

Будь то Windows, Linux, OS X или любая другая ОС, компилятор Java должен знать, где искать классы, используемые вашей программой, но не включенные в ее источники. Для этой цели он использует путь к классам.

Как определяется содержимое пути к классам, немного сложно, и он может иметь детали, зависящие от реализации, но для вашего конкретного случая вам, вероятно, следует просто использовать параметр -cp для javac, чтобы указать ему, где найти необходимые классы:

javac -cp /home/apps/cplex/12.6.1/cplex/lib/cplex.jar file.java
person John Bollinger    schedule 21.07.2015