2011-12-15 5 views
11

Я пытаюсь запустить Maven на cygwin. Я добавил Maven в путь и мой Java дом выглядит следующим образом:Maven с Cygwin - Ошибка: JAVA_HOME не определен правильно

$ echo $JAVA_HOME 
/cygdrive/c/Program Files/Java/jdk1.6.0 

Но когда я пытаюсь запустить mvn --version, я получаю это:

Error: JAVA_HOME is not defined correctly. 
    We cannot execute /cygdrive/c/Program Files/Java/jdk1.7.0_01/bin/java 

Любая идея, почему это не работает? Java -version работает отлично, поэтому это не проблема с java. Я также попытался использовать jdk1.6.0.

Запуск which java дает,

$ which java 
/cygdrive/c/windows/system32/java 

и java -version дает,

$ java -version 
java version "1.7.0_01" 
Java(TM) SE Runtime Environment (build 1.7.0_01-b08) 
Java HotSpot(TM) Client VM (build 21.1-b02, mixed mode, sharing) 
+1

Вам нужно освободить место в Program Files с помощью \ Я никогда не устанавливаю ничего, связанное с программным файлом, из-за этого глупого пространства. – digitaljoel

+0

Я избежал его, но он дает ту же ошибку. Мне также не нравится пространство в Program Files, но я бы предпочел не менять способ использования окон только из-за cygwin. – gsingh2011

+0

Что делает 'which java' распечатать? и 'java -version'? – jtahlborn

ответ

0

Воспоминания от Win95 дней - может установку JAVA_HOME для /cygdrive/c/Progra~1/Java/jdk1.6.0 помощи?

3

cygwin использует консоль dos для выполнения maven builds (mvn.bat).

Установите Java дом в C: \ Program Files \ Java \ jdk1.7.0_01

+0

, на самом деле это самый правильный способ решить эту проблему. Все инструменты cygwin undestand windows-style 'JAVA_HOME', но не наоборот. –

+0

Он работал на моем жестком диске, но не для флеш-накопителя. используя mvn.bat, работал в обоих случаях, я не знаю, почему это должно быть так! – binit

17

У меня была такая же проблема, и решить ее так: Если я бегу mvn.bat вместо MVN, я сделал не имеет этой проблемы.

Итак, поскольку Cygwin запустит файл mvn, я заменил этот файл mvn на soft-файл (ln -s mvn.bat mvn) на файл bat. Таким образом, запуск mvn будет бесшумно запускать mvn.bat, который обрабатывает эти проблемы изящно.

+0

У меня была такая же проблема, я пытался запустить муравья из cygwin. Путь JAVA_HOME был определенно корректным, запуск ant.bat вместо ant делал исправление моей проблемы –

+0

У меня такая же проблема с Gradle: я хотел запустить сборку maven из Gradle, но когда «mvn» выполняется из скрипта gradle , JAVA_HOME внезапно «исправляется» в/cygdrive/-path (вместо пути C: \ ..- он при вызове градиента), и, таким образом, maven invoker, который, очевидно, работает в dos-пространстве, не может найти java , Кто-нибудь знает, кто меняет JAVA_HOME ?! Кажется, что это единственный env-var, который получает это лечение. (Может показаться, что это имеет какое-то отношение к вызову стиля cmd/c подпроцесса). – stolsvik

10

Любой Использование Cygwin и Maven, вот именно то, что вам нужно ...

В вашем Cygwin Баш строке:

$ vim ~/.bashrc или $ nano ~/.bashrc (Какой бы вы фантазии ...)

Приложить следующее:

alias mvn=mvn.bat

Сохранить & Выход. Затем запустите:

$ source ~/.bashrc

Теперь вы должны быть в состоянии использовать команду «МВН», как вы в CMD строке.

0

Я столкнулся с той же проблемой при запуске Gradle из Cygwin инструмента.

Я использовал для установки Java дома, включая бен папку

C:\Program Files\Java\jdk1.7.0_67\bin 

Но позже я понял, что некоторые приложения не распознают, если и включают в себя папку BIN, поэтому я изменил путь класса к C:\Program Files\Java\jdk1.7.0_67 и он начал работать ,

Смежные вопросы