Cygwin вызывает ошибку Java "пакет не существует" - PullRequest
0 голосов
/ 25 февраля 2019

Я компилирую проект Java через make-файл, и у меня с соавтором разные машины (у него Apple, у меня Windows).Я использую Cygwin для запуска make-файла на моей машине, но Java не будет компилироваться - даже если он компилируется на машине моего соавтора.Команда, которая работает для него, имеет вид

javac -cp "./stem/java/lib/*:./stem/java/bin/Project.jar" -d ./stem/ java / bin ./stem/java/src/Project/A.java ./stem/java/src/Project/B.java ./stem/java/src/Project/C.java ./stem/java/src/Project/D.java ./stem/java/src/Project/E.java ./stem/java/src/Project/F.java

Выполнение одной и той же команды на моем компьютере приводит к ошибкамвида

. \ stem \ java \ src \ Project \ A.java: 460: ошибка: пакет GRB не существует

Где GRB - внешний Gurobi.jar, который находится в папке / lib / и много раз используется в коде.

Затем я попытался выполнить ту же команду через командную строку Windows, а не Cygwin, но она выдает то же сообщение об ошибке

Затем я попытался изменить управляющие символы с "/" на "\ ", как было указано в сообщении об ошибке, но это тоже не сработало.В Windows cmd ошибка была такой же, как и раньше, но в Cygwin это было:

javac: файл не найден: .stemjavasrcProjectA.java

Ошибка, очевидно, некотораяпроблема с тем, как Cygwin запускает make-файл (это не может быть проблемой с путем сборки внешнего jar-файла, иначе он не будет работать для моего соавтора), но что это может быть?

1 Ответ

0 голосов
/ 26 февраля 2019

Даже если вы работаете в Cygwin, вы все равно вызываете версию / дистрибутив Java для Windows.

В версии Java для Windows требуется использовать символ точки с запятой (;) в качестве разделителя пути к классам (какв противоположность двоеточию (:) используется в Linux и Mac).Поэтому измените команду в вашем make-файле на

javac -cp "./stem/java/lib/*;./stem/java/bin/Project.jar"...

...