1. ホーム
  2. Maven

Maven NoClassDefFoundError: org/codehaus/plexus/classworlds/launcher/Launcher

2022-02-13 07:54:55

    Macでもプログラムコードをチェックアウトしたいのですが。最初にmaven3をインストールしましたが、何回か同期した後、maven3とmaven2の設定ファイルの要件が異なるようで問題が発生したので、maven2を再インストールしたいと思います。

    mavenのインストールは、mavenのパッケージを解凍して適当な場所に置くだけなので、それに合わせて以下のようにいくつかの環境変数を設定する必要があります。

    M2_HOME=/usr/local/apache-maven/apache-maven-3.0.4

    M2=$M2_HOME/bin

    PATH=$M2:$PATH

    今思えば、設定したときはM2だったのに、新たにMaven3をインストールしてきたら、何も聞かなくなりましたね。

    単純に PATH を変更して新しい apache-maven-2.2.1 を指すようにすればいいと思ったのですが、mvn eclipse:eclipse を実行すると、以下の例外が発生します。

スレッドで例外 "main" java.lang.NoClassDefFoundError: org/codehaus/plexus/classworlds/launcher/Launcher
原因:java.lang.ClassNotFoundException: org.codehaus.plexus.classworlds.launcher.
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    調べたところ、M2_HOMEを設定する環境変数で、M3_HOMEを設定するためという話もありましたが、私は設定していませんでした。再度原因を探したところ、ようやく適切な解決策が見つかりました。

    あなたのシステムでこれらの数量を見ることができます。

bash-3.2$ which mvn

/usr/bin/mvn

bash-3.2$ ls -la /usr/bin/mvn

lrwxr-xr-x 1 root wheel 24 Feb 16 22:54 /usr/bin/mvn -> /usr/share/maven/bin/mvn

bash-3.2$ ls -la /usr/share/maven

lrwxr-xr-x 1 root wheel 16 Feb 16 22:54 /usr/share/maven -> java/maven-3.0.3

見ての通り、ここのリンクはまだ maven-3.0.3 で、これは java の自動更新リンクのようで、私の前のバージョン 3.0.4 でもない・・・・・・。

開発時に誰もが持っていたバージョンと整合性を保つために、リセットする

bash-3.2$ cd /usr/share/

bash-3.2$ sudo mv maven maven.temp

bash-3.2$ sudo ln -s /usr/local/apache-maven/apache-maven-2.2.1/ maven

もう一度コマンドを実行すると、バージョンが表示されます。

bash-3.2$ mvn -version
Apache Maven 2.2.1 (r801777; 2009-08-07 03:16:01+0800)
Javaバージョン:1.6.0_29
Java のホームです。/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
デフォルトロケール:en_US、プラットフォームエンコーディング。MacRoman
OS名: "mac os x" バージョン: "10.6.8" アーチ: "x86_64" ファミリー: "mac"