Вопрос по java, windows, maven – Ошибка Maven: не удалось найти или загрузить основной класс org.codehaus.plexus.classworlds.launcher.Launcher

124

Я установил последнийmaven-3.0.4 наWindows 7:
Детали установки следующие:
Путь установки:

C:\apache-maven-3.0.4  

Переменные среды:

M2_HOME C:\apache-maven-3.0.4\apache-maven\src  
JAVA_HOME C:\Program Files\Java\jdk-1.7.0_04  

Добавлены переменные пути:

%M2_HOME%\bin;%JAVA_HOME%\bin;

В командном окне это выглядит так:

C:\>java -version  
java version "1.7.0_04"  
Java(TM) SE Runtime Environment (build 1.7.0_04-b22)  
Java HotSpot(TM) Client VM (build 23.0-b21, mixed mode, sharing)  
C:\>mvn -version  
Error: Could not find or load main class org.codehaus.plexus.classworlds.launcher.Launcher  

Это единственная версия на maven, установленная на моем ПК, и решение, данное во многих блогах со ссылкой на удаление предыдущегоM2_HOME Переменная окружения недопустима.

Я прочитал и попробовал все решения, приведенные в блогах, такие как:

но до сих пор не смог добраться до него. Чего мне не хватает во всем этом? Заранее спасибо.

@PavelHoral то же самое случилось со мной hoaphumanoid
Только что скачалbinary zip и это было сломано. Заменено на.tar.gz и это работает. Так когдаM2_HOME установлен правильно, попробуйте проверить, что вы скачали правильно. Pavel Horal

Ваш Ответ

27   ответов
47

несмотря на то, что установки выполнялись apt-get. Проблема была в M2_HOME.

Исправлено с помощью:

export M2_HOME=/usr/share/maven
В Ubuntu лучше создать /etc/profile.d/maven.sh командой, которую вы указали:export M2_HOME=/usr/share/maven, Как указывал @jimkont, иногда это maven2 или maven3 (если вы, конечно, установили maven3).
Оно работает. Благодарю. Но можем ли мы просто добавить его в файл / etc / environmenttment?
Это сработало для меня, но с M2_HOME = / usr / share / maven2 (на случай, если кто-нибудь еще попробует). Спасибо!
это сработало: экспорт M2_HOME = / usr / share / maven3
126

Я тоже столкнулся с этой проблемой и нашелthis статья. Для Maven3 смена имени переменной среды с M2_HOME на M3_HOME сделала свое дело. Я на Mac под управлением OSX 10.9 с JDK 1.7. Надеюсь это поможет.

Примечание: пожалуйста, удалите M2_HOME, если он уже установлен. Например:unset M2_HOME

Да, это сработало для меня на моем Mac. Спасибо!
то же самое думаю, на Mac
То же самое для меня на Mac.Make sure you delete M2_HOME
Это работает с Mac OS 10.10.5 с установленным brew maven (3.3.3).
Это решение работает, но не по тем причинам, о которых вы могли подумать. Проблема, как указано вsome изcomments из упомянутой статьи не в том, что вместо этого нужен M3_HOME, а в том, что M2_HOME определен неправильно. Кажется, что M3_HOME вообще не используется, поэтому в основном то, что происходит, используется по умолчанию, когда вы удаляете M2_HOME.
0

Точно такая же ошибка может появиться даже при правильных настройках переменных среды, если вы копируете ТОЛЬКОbin каталог в каталог установки. Это делаетwhich работают отлично, и новички застревают.

4

Вы должны изменить местоположение M2_HOME на следующее:

set M2_HOME=C:\apache-maven-3.0.4\apache-maven

Кроме того, установка JDK выглядит скорее как JRE, а не JDK. Для Maven вам нужен JDK, а не JRE.

Вы измените M2_HOME, как я описал, и вы добавите% M2_HOME% \ bin к вашему пути, который необходим для вызова команды mvn.
Спасибо, но у меня есть и JDK, и JRE. Вы можете видеть, что я дал JAVA_HOME как C: \ Program Files \ Java \ jdk1.7.0_04. И если я укажу путь к M2_HOME, который вы сказали, cmd даже не распознает 'mvn' команда. manofsins
1

Попробуйте загрузить бинарный zip (например, Maven 3.0.5 (Binary zip)) вместо полного исходного кода на официальном сайте maven. Также убедитесь, что командная строка распознает команды java и javac. Я заметил, что в Maven Source zip не было никаких библиотек в папке lib, однако в Binary zip они были + в загрузочной папке - plexus-classworlds-2.4.jar. Возможно, проблема была в отсутствии этих библиотек. В любом случае это помогло мне, поэтому мой M2_HOME: C: \ Program Files \ Java \ apache-maven-3.0.5 и в PATH я поставил: C: \ Program Files \ Java \ apache-maven-3.0.5 \ bin.

0

Для меня, как ни странно, это помогло просто перезагрузитьeclipse...

13

Ну, у меня была эта проблема, и, увидев этот пост и, в частности, ответ на этот вопрос, я заметил, чтоM2_HOME было

D:\workspace\apache-maven-3.1.0-bin\apache-maven-3.1.0\bin

а потом я заправил его

D:\workspace\apache-maven-3.1.0-bin\apache-maven-3.1.0

Я хотел бы отметить, что я использую Windows 7 (x64)

3

Я столкнулся с аналогичной проблемой на моем Mac OSX. После серии проб и ошибок я, наконец, решил ее.

мой~/.bash_profile выглядело так

export M2_HOME=/Users/xyz/maven-3.x/bin
export PATH=$PATH:$M2_HOME

и когда я пыталсяecho M2_HOME из терминала, он показал мне правильный путь, но когда я попытался запустить любую команду Maven, какmvn clean или жеmvn install, это всегда давало одну и ту же проблему

Could not find or load main class org.codehaus.plexus.classworlds.launcher.Launcher

Я решил эту проблему, изменив мойM2_HOME к этому

export M2_HOME=/Users/xyz/maven-3.x
export PATH=$PATH:$M2_HOME/bin

И вуаля! Это начало работать! Просто перемещая положение/bin от M2_HOME до передPATH

51

Несмотря на ответ на вопрос, я хотел бы добавить, что, если вы получаете вышеупомянутую ошибку, убедитесь, что вы загрузилиBinary file.

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

У меня было довольно много людей, загружающих неправильный файл, старшие и младшие

Только что это случилось со мной. Веб-сайт неясно, на котором использовать.
+1: здесь произошло то же самое - случайно нажали не ту ссылку на скачивание. Работает не то, что я получил нужный zip-файл!
Правда. Загрузил исходные файлы и попытался обновить M3_HOME, но это не сработало. Двоичные файлы работают хорошо.
Это единолично решило проблему для меня - спасибо!
Я действительно скачал источникon purposeЭто традиционный способ работы, но я случайно выполнил инструкции для двоичной установки. Просто скопировать двоичный файл tar в конечном итоге стало проще.
18

что эта ошибка вызвана загрузкой SRC вместо BINARY с сайта Maven. Пожалуйста, не забудьте скачать двоичный почтовый индекс.

Поскольку путь ниже, вы получите только при загрузке SRC:

M2_HOME C:\apache-maven-3.0.4\apache-maven\src

enter image description here

0

У меня была проблема с верным плагином. Возвращение к версии 2.6 работало для меня. Версия 2.18 / 20 / 22.1 выдала мне ошибку. Теперь я попробовал версию 3.0.0-M1 надёжного плагина, и он работает.

Так что что-то не так в верном плагине между версией 2.6 и 3.0.0. Я предполагаю, что по умолчанию есть что-то жестко закодированное, чего не должно быть.

60

У меня была такая же проблема, и я смог ее решить, тщательно переделав переменные среды:

  • M2_HOME
  • M2
  • JAVA_HOME

Кроме того, я сделал их всехSystem Переменные, а не пользовательские переменные, как сказано в инструкциях Maven. Когда ты

echo %Path%

Убедитесь, что переменные% M2% и% JAVA_HOME% полностью раскрыты, т.е.

C:\Users\afairchild>echo %Path%
C:\Program Files\Apache Software Foundation\apache-maven-3.0.4\bin;C:\Program Files\Java\jdk1.7.0_09\bin; [etc]
КакM2 переменная среды используется? у меня есть толькоJAVA_HOME а такжеM2_HOME.
не работает на windows 7 x64 maven 3.3.3
@KevinMeredith: TheM2 переменная окружения иногда используется для указания%M2_HOME\bin% путь, который, в свою очередь, затем добавляется к%Path% переменная окружения. Это необходимо, когда командный файл Mavenmvn.bat не может быть найдено в стандарте%Path% записи определены. Типичным вариантом использования будет нестандартный каталог установки для Maven.
M2_HOME - это первое, что нужно проверить, обновляете ли вы. JAVA_HOME должен остаться без изменений.
2

Для большинства проблем с установкой Maven что-то вроде «Не удалось найти или загрузить основной класс ...», начните с приведенных ниже шагов, чтобы увидеть, исправляет ли это:

  • Make sure you unzipped the right archive (BINARY archive and not SOURCE archive)
  • Remove all user and system variables related to Maven (ex. M2_HOME,M2_OPTS etc.)
  • Make sure JAVA_HOME system variable is setup (ex. "C:\Program Files\Java\jdk1.8.0_172")
  • Make sure java bin location is added in "path" system variable (ex. "%JAVA_HOME%\bin")
  • Make sure maven bin location is added in "path" system variable (ex. "C:\MyInstalls\apache-maven-3.5.4\bin")

затем...

  • Verify java is setup (at commandprompt : java -version),
  • Verify maven is setup (at commandprompt : mvn --version)
2

Просто убедитесь, что вы загрузили бинарный zip-архив (apache-maven-3.5.0-bin.zip) вместо исходного zip-архива. Затем добавьте каталог bin созданного каталога apache-maven-3.5.0 в переменную среды PATH.

0

У меня была эта проблема, когда я использовал Maven 3.5.4 на OpenJDK 11 на Ubuntu. OpenJDK 11 в Ubuntu на самом деле все еще является JDK10:

$ ls -al /etc/alternatives/java
lrwxrwxrwx 1 root root 43 Aug 24 04:54 /etc/alternatives/java -> /usr/lib/jvm/java-11-openjdk-amd64/bin/java
$ java --version
openjdk 10.0.2 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.3)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.3, mixed mode)

Я установил OpenJDK из Oracle в /opt/jdk-11.0.1 и запустил Maven следующим образом:

JAVA_HOME=/opt/jdk-11.0.1 mvn

Теперь это работает как шарм.

5

Решение для более поздних версий Maven простое. Я на OS X ElCap, 10.11.6 и обновлен до Maven 3.3.9. У меня была такая же проблема с ошибкой & quot;Could not find ...org.codehaus.plexus...& Quot ;. Ссылка предоставленаВот предложил решение в комментарии McKamey - просто удалите M2_HOME (unset M2_HOME). Как только я это попробовал, все заработало как положено.

Это можно подтвердить, посетивMaven install page: & quot; Добавить каталог bin созданного каталога apache-maven-3.3.9 в переменную среды PATH & quot; - нет упоминания о M2_HOME или M3_HOME вообще.

Спасибо ... Это сработало ...
Вау, спасибо за это :-)
не сбрасывайте M2, M2_HOME - установите их правильно.
1

Я думаю, что вы скачали не ту версию. Я сталкиваюсь с этой проблемой только сейчас, ни один метод не работает после поиска и поиска. Наконец, я обнаружил, что Maven, который я скачал,Исходный zip архив. After I change to Бинарный почтовый архиввсе будет хорошо.

Я как раз собирался опубликовать это. Это именно та проблема, с которой я столкнулся. Если бы я только прочитал ваш ответ раньше, он бы сэкономил мне 30 минут.
-1

Это распространенная проблема при настройке Maven. Все, что вам нужно сделать, это ниже: -

  1. M2_HOME :- D:\apache-maven-2.0.11
  2. M2 :- D:\apache-maven-2.0.11\bin
  3. Path :- Append it with ;%M2%

M2_HOME & amp; M2: - должны быть объявлены как системные переменные, а не как переменные USER / ADMIN.

Путь: - Это может быть системная переменная ИЛИ переменная USER / ADMIN [PATH]. Предпочтительно системная переменная.

Как только вы тщательно настроите эти 3 переменные, вы можете проверить установку Maven, как показано ниже.

На CMD Подсказка: -


C: \ Documents and Settings \ ADMIN & gt; mvn --version


Выход :-


Apache Maven 2.0.11 (r909250; 2010-02-12 11: 25: 50 + 0530) Версия Java: 1.6.0_22 Домой Java: C: \ Program Files \ Java \ jdk1.6.0_22 \ jre Локаль по умолчанию: en_US, кодировка платформы: Cp1252 Название ОС: & quot; Windows XP & quot; версия: & quot; 5.1 & quot; арка: "x86" Семья: "окна"

Благодарю.

-1

Рядом с, возможно, полезными, но, возможно, слишком симптоматичными ответами, вот тот, который пытается помочь найти причину проблемы.

Maven - это Java-инструмент командной строки. Это означает, что это не отдельный двоичный файл, это коллекция Java.jars, интерпретируется JVM (java.exe на окнах,java на Linux).

mvn Команда, это скрипт. На окнах это скриптmvn.cmd а в Linux это сценарий оболочки. Таким образом, если вы напишите:mvn install, что случится:

  1. a command interpreter (/bin/sh or cmd.exe) is called for the actual invoking script
  2. this script sets the needed environment variables
  3. and finally, it calls a java interpreter with the the required classpath which contain the maven functionality.

Проблема в (2). К счастью, этот скрипт просто, очень прост. Для Java-программиста не должно быть большой проблемой отлаживать сценарий в 20 строк, даже если это немного инопланетный язык.

В Linux вы можете отлаживать скрипты оболочки, давая-x флаг вашего интерпретатора оболочки (что наиболее вероятноbash). В Windows вы должны найти другой способ отладкиcmd.exe скрипт. Итак, вместоmvn installдай командуbash -x mvn install.

Результат будет как:

+ '[' -z '' ']'
+ '[' -f /etc/mavenrc ']'
+ '[' -f /home/picsa/.mavenrc ']'
+ cygwin=true
+ darwin=false

... не так много вещей ...

+ MAVEN_PROJECTBASEDIR='C:\peter\bin'
+ export MAVEN_PROJECTBASEDIR
+ MAVEN_CMD_LINE_ARGS=' '
+ export MAVEN_CMD_LINE_ARGS
+ exec '/cygdrive/c/Program Files/Java/jdk1.8.0_66/bin/java' -classpath 'C:\peter/boot/plexus-classworlds-*.jar' '-Dclassworlds.conf=C:\peter/bin/m2.conf' '-Dmaven.home=C:\peter' '-Dmaven.multiModuleProjectDirectory=C:\peter\bin' org.codehaus.plexus.classworlds.launcher.Launcher
Fehler: Hauptklasse org.codehaus.plexus.classworlds.launcher.Launcher konnte nicht gefunden oder geladen werden

В конце вы можете легко проверить, какая переменная окружения испортилась, и вы можете очень легко исправить свой сценарий (или установить то, что нужно).

2

Я была такая же проблема. У меня есть Windows XP Box и когда я набрал быmvn -version в командной строке я получил страшное сообщение об ошибке

"Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/plexus/classworlds/launcher/Launcher"

Я подтвердил, что мойM2_HOME переменная была установлена на путь, где Maven был установлен на ПК и чтоecho %path% подтвердил, что Maven был на моем пути.

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

Я скопировал путь, который был назначен для моегоM2_HOME переменная. Я открыл окно cmd и набрал cd и вставил путь, который получил из моегоM2_HOME переменная. В тот момент я знал, что путь был правильным, потому что путь отображался в окне. В этот момент я ввел команду dir и, к своему удивлению, получил ошибку File Not Found.

Я пошел по этому пути через Проводник и, конечно же, там были файлы. Я заметил, что папки исчезли, но я мог получить к ним доступ и просмотреть файлы в каждой папке (у меня есть права администратора на моем компьютере). Я посмотрел на свойства родительской папки для Maven и увидел, что флажок Скрытый установлен. Я снял чек и применил и снова попытался успешно выполнить команду dir.

Затем я попробовалmvn –version Команда снова, но на этот раз я получил ожидаемые результаты.

C:\>mvn -version
Apache Maven 3.0.3 (r1075438; 2011-02-28 11:31:09-0600)
Maven home: C:\Program Files\apache-maven-3.0.3
Java version: 1.5.0_16, vendor: Sun Microsystems Inc.
Java home: C:\Java\jdk1.5.0_16\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows xp", version: "5.1", arch: "x86", family: "windows"

Наконец я создал файл jar и war, и мое веб-приложение успешно запустилось на моем локальном Tomcat.

Я надеюсь, что это поможет некоторым из вас там.

1

Кроме того, на что @khmarbaise указал, я думаю, что вы опечатали свой JAVA_HOME. Если вы установили в папку по умолчанию, то не должно быть "& quot;" (дефис) между JDK и 1.7.0_04. Так было бы

JAVA_HOME C:\Program Files\Java\jdk1.7.0_04 
Спасибо, но, к сожалению, я набрал это только здесь, и это было так же, как вы сказали, "без дефиса". manofsins
1

Для других людей, которые могут столкнуться с этим, не забудьте проверить ~ / .mavenrc для настроек M2_HOME или JAVA_HOME.

19

Похоже, вы установили (извлекли) исходные файлы вместо двоичных файлов, основываясь на информации о вашем пути. Попробуйте вместо этого установить двоичные файлы и следуйте ответам других авторов.

Спасибо исправил мой тоже. Однако, почему вы не можете также использовать загрузку src, если она содержит правильный исполняемый файл в каталоге bin?
1

Я обнаружил, что эта проблема в моем CentOS вызвана "Oracle Java заменяется на gcj", после изменения по умолчанию Java на "Oracle Java" проблема решена.

alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
*  1           /usr/lib/jvm/jre-1.5.0-gcj/bin/java
 + 2           /usr/java/jdk1.7.0_67/bin/java
1

Похоже, что вы установили исходные файлы (потому чтоsrc входит только в исходные файлы, и нам это не нужно). Попробуй установитьBinary Files от там. And then set environment variables as described там. This worked for me. And I am sure it will also work for you.

0

Это сработало для меня:

  1. Remove all Mavin references in Environment Variables
  2. Download the Binary from mavin
  3. Unzip it to where you'd like ex: C:\apache-maven-3.6.0
  4. Go to Environment variables and add to System variable path "C:\apache-maven-3.6.0\bin"
  5. start command prompt as Administrator
  6. check version with: mvn -v

CMD Результат:

Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-24T20: 41: 47 + 02: 00) Дом Maven: C: \ apache-maven-3.6.0 \ bin ..

1

Я тоже сталкивался с подобной проблемой. Но в моем случае я использовал папку apache-maven-3.3.3-src в переменных пути. Позже я исправил их, указав правильный путь к папке apache-maven-3.3.3-bin. Это решило проблему. Я не говорю, что это та же ошибка, о которой здесь сообщается, но таким образом вы также можете получить эту ошибку и исправить ее. Вот что я пытаюсь здесь сказать.

Похожие вопросы