2017-10-12 13 views
8

私はGit Bash(64ビット版)を数ヶ月使用していましたが、突然それが動作を停止し、これを生成しています任意のMavenのコマンドのエラー:私はこの1つを含むように多くの質問を、検討しているGit for Windows(64ビット版)のMaven classworlds.launcher.Launcherエラー

[email protected] MINGW64 ~ (master *) 
$ mvn -v 
Error: Could not find or load main class org.codehaus.plexus.classworlds.launcher.Launcher 

Maven error: Could not find or load main class org.codehaus.plexus.classworlds.launcher.Launcherが、私の問題を解決していません。

2.12からWindows(2.14.2.windows.2)の最新版にアップグレードしましたが、問題は残ります。

私のMavenのインストールはCである:\ apacheの-のmaven-3.5.0 \ binに、私のPATH変数である:私もJAVA_HOMEが正しく設定されている

[email protected] MINGW64 ~ (master *) 
$ echo $PATH 
...:/c/jdk1.7.0_79/bin:/c/apache-maven-3.5.0/bin:... 

[email protected] MINGW64 ~ (master *) 
$ echo $JAVA_HOME 
C:\jdk1.7.0_79 

私は、追加/ MAVEN_HOMEを削除しようとしたが、それは、Apache Mavenの起動スクリプトで検出されていないようです(C:\ apacheの-のmaven-3.5.0 \ビン\のMVN):

[email protected] MINGW64 ~ (master *) 
$ echo $MAVEN_HOME 
c:\apache-maven-3.5.0 

Apache Mavenスタートアップスクリプトに入り、$ {MAVEN_HOME}のインスタンスをC:\ apache-maven-3.5.0に置き換えると、Launcherクラスが見つかったようで正しく実行されます。このような

編集:

CLASSWORLDS_JAR=`echo "${MAVEN_HOME}"/boot/plexus-classworlds-*.jar` 
    to 
CLASSWORLDS_JAR=`echo /c/apache-maven-3.5.0/boot/plexus-classworlds-*.jar` 

その後、生産:

[email protected] MINGW64 ~ (master *) 
$ mvn -v 
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T15:39:06-04:00) 
Maven home: C:\apache-maven-3.5.0 
Java version: 1.7.0_79, vendor: Oracle Corporation 
Java home: C:\jdk1.7.0_79\jre 
Default locale: en_US, platform encoding: Cp1252 
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows" 

これは洗練回避策で、むしろ適切な解決策を見つけるだろう。どのような環境や設定を変更すれば、Mavenはパスをハードコーディングせずに実行できますか? VonC's answerため


ステップ/結果:

Microsoft Windows [Version 6.1.7601] 
Copyright (c) 2009 Microsoft Corporation. All rights reserved. 

C:\windows\system32>set PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\ 
C:\windows\system32>set GH=C:\Program Files\Git 
C:\windows\system32>set PATH=%GH%\bin;%GH%\usr\bin;%GH%\mingw64\bin;%PATH% 
C:\windows\system32>set PATH=%JAVA_HOME%\bin;%MAVEN_HOME%\bin;%PATH% 

C:\windows\system32>echo %PATH% 
C:\jdk1.7.0_79\bin;c:\apache-maven-3.5.0\bin;C:\Program Files\Git\bin;C:\Program Files\Git\usr\bin;C:\Program Files\Git\mingw64\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\ 

C:\windows\system32>echo %M2_HOME% 
C:\apache-maven-3.5.0 

C:\windows\system32>mvn -v 
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T15:39:06-04:00) 
Maven home: c:\apache-maven-3.5.0\bin\.. 
Java version: 1.7.0_79, vendor: Oracle Corporation 
Java home: C:\jdk1.7.0_79\jre 
Default locale: en_US, platform encoding: Cp1252 
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows" 

C:\Windows\System32>bash 

[email protected] MINGW64 /c/Windows/System32 
$ mvn -v 
Error: Could not find or load main class org.codehaus.plexus.classworlds.launcher.Launcher 

[email protected] MINGW64 /c/Windows/System32 
$ echo $M2_HOME 
C:\apache-maven-3.5.0 

[email protected] MINGW64 /c/Windows/System32 
$ echo $MAVEN_HOME 
c:\apache-maven-3.5.0 

さらにデバッグした後、私は私の問題は、MAVEN_HOME変数は、コードのこのセクションではクリアされますMaven error in MINGW Git bash: Could not find or load main class org.codehaus.plexus.classworlds.launcher.Launcher、同じように見えるが実現:

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

違反行を実行すると、bashのセッションでは、私はWindows用の最新のGitで動作を再現することができます

[email protected] MINGW64 ~ (master *) 
$ git --version 
git version 2.14.2.windows.3 

[email protected] MINGW64 ~ (master *) 
$ echo $MAVEN_HOME 
c:\apache-maven-3.5.0 

[email protected] MINGW64 ~ (master *) 
$ [[ -n "$MAVEN_HOME" ]] && MAVEN_HOME=`(cd "$MAVEN_HOME"; pwd)` 

[email protected]ypc MINGW64 ~ (master *) 
$ echo $MAVEN_HOME 


[email protected] MINGW64 ~ (master *) 
$ 

これは私が直接コマンドを実行するときに私が得るものです - それは、現在のディレクトリを返し、私が期待するようMAVEN_HOMEありません。コマンドがサブシェルで実行されるために起こると仮定しますか?

[email protected] MINGW64 ~ (master *) 
$ echo `(cd "$MAVEN_HOME"; pwd)` 
/c/home 

[email protected] MINGW64 ~ (master *) 
$ `(cd "$MAVEN_HOME"; pwd)` 
bash: /c/home: Is a directory 
+0

JAVA_HOMEとMAVEN_HOMEのconigurationとgit bashのバージョンを詳細に共有できますか? – nullpointer

+0

@nullpointerありがとうございました - 質問に組み込まれている、あなたがもっと情報が必要かどうか私に教えてください。 – mcknz

答えて

1

テストするための最初の事は%PATH%です:CMDセッションで、simplifiedPATHを設定します。

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;%PATH% 

C:\WINDOWS\...パスがPATHの最後にを保持する方法注:それは重要です。

次に、%JAVA_HOME%\bin<maven>\binのパスを追加します。

M2_HOMEC:\apache-maven-3.5.0に設定してください。あなたのプログラムとのあなたのブランドに応じて、

最後に

最後に、(ちょうど「bash」と入力)現在のCMDに、または(その同じWindowsに)Gitのbashのセッションの両方で、あなたのmvnコマンドをテスト

、 OSでは、Windows 10ではWSL and a full-fledge Linux bashがあることを忘れないでください。それは可能な代替手段である可能性があります。

+0

ありがとうございます - 残念ながら、私はWin7でこの問題を抱えています。結果に質問を追加しました。これは私のPATHを再注文する必要があるということですか? – mcknz

+0

はい、あなたのパスを私が記述した通りに正確に設定し、必要のないすべてをカットします。 – VonC

+0

はまだ制限されたパスでbashで動作しません - CMDウィンドウに "bash"と入力するとPATHは/mingw64/bin:/usr/bin:/c/dotfiles/bin:/c/jdk1.7.0と表示されます_/bin:/c/apache-maven-3.5.0/bin:/c/jdk1.7.0_79:/c/apache-maven-3.5.0:/ bin:/ usr/bin:/ mingw64/bin://c/WINDOWS:/ c/WINDOWS:/ c/WINDOWS/System32/Wbem:/ c/WINDOWS/System32/WindowsPowerShell /v1.0 – mcknz

関連する問題