Ошибка Maven в MINGW Git bash: не удалось найти или загрузить основной класс org.codehaus.plexus.classworlds.launcher.Launcher

Мне известно о том, что этот вопрос обсуждался в нескольких вопросах, но ни один ответ не разрешил мою конкретную проблему.

Я установил Git bash и Maven, и я пытаюсь выполнить Maven с помощью Git bash. Он отменяет указанную ошибку.

Моя системная среда:

Windows 7
Git 2.13.3
Maven 3.5.0

Необходимые пользовательские переменные:

HOME=%HOMEPATH%
M3_HOME=%MAVEN_HOME%
MAVEN_HOME=path-with-no-blanks
Path=%MAVEN_HOME%\bin

Maven отлично работает в командной строке Windows и Cygwin. Только с ошибкой Git bash на основе MINGW.

Я рассмотрел bash script mvn в разделе: C:\path\to\maven\bin

Установив логические выходы и проверив, когда значение MAVEN_HOME теряется, я обнаружил, что эти утверждения (даже JAVA_HOME) очищаются:

# For MinGW, ensure paths are in Unix format before anything is touched !!!HERE MAVEN_HOME value is getting lost!!!
if $mingw ; then
  [ -n "$MAVEN_HOME" ] &&
    MAVEN_HOME=`(cd "$MAVEN_HOME"; pwd)`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`(cd "$JAVA_HOME"; pwd)`
  # TODO classpath?
fi

На другой машине Windows (другая версия Maven и Git) одни и те же строки немного отличаются:

M2_HOME="`(cd "$MAVEN_HOME"; pwd)`"

вместо:

MAVEN_HOME=`(cd "$MAVEN_HOME"; pwd)`

Во-первых, я думал об этом из-за типа котировочных символов. Но рабочая машина Windows даже хорошо работает с новым script с моей неисправной машины Windows. Я также попытался установить старый Git или более старый Maven - ничего не помогает.

Почему указанная строка bash script очищает переменную MAVEN_HOME?

Ответ 1

Некоторое время я получал точно такую же ошибку, пока не понял, что это вызвано моим антивирусом (Comodo). Git Bash не будет работать должным образом, даже если я вышел/отключил Comodo.

Поэтому, если у вас есть Comodo, попробуйте выполнить следующие действия, чтобы исправить ошибку (если вы этого не сделаете, то, возможно, попробуйте выполнить нечто подобное с любым используемым антивирусом/брандмауэром):

  1. Comodo-> Настройки-> Файл Rating-> Добавить папку (Git Folder). В результате было добавлено более 5000 доверенных файлов (но это помогло решить проблему).

  2. Comodo-> Настройки-> Дополнительно Protection-> Разное-> и найдите галочку "Не обнаруживать инъекции шелл-кода в...". Я добавил всю папку Git для инъекций шелл-кода.

  3. Я установил для папки git значение "игнорировать" в Comodo-> "Настройки" → containment-> "Автоматическое ограничение"

Я добавлю, что я не уверен, что все шаги требуются, поэтому не стесняйтесь выполнять их один за другим и посмотрите, что поможет.

Ответ 2

  Испытывает точно такую же проблему на компьютере с Windows 7. Произошло в одночасье без изменения версии в git/mingw64, maven или java.

Первый тест, который вы можете рассмотреть, - это проблема PATH (на самом деле ОП упоминает неверный Path=%MAVEN_HOME%\bin)

Для тестирования используйте упрощенную PATH в сеансе CMD (поэтому он ограничен только этим сеансом)

set PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\
set GH=C:\path\to\git
set PATH=%GH%\bin;%GH%\usr\bin;%GH%\mingw64\bin;%MAVEN_HOME%\bin;%PATH%
set PATH=%JAVA_HOME%\bin;%MAVEN_HOME%\bin;%PATH%

Вы можете адаптировать ту же идею в своем .bashrc, если вы хотите подобный $ PATH в своем сеансе bash, введя bash в CMD с упрощенным PATH.

Затем; в этом контексте вы можете еще раз проверить, сохраняется ли проблема.