web-dev-qa-db-ja.com

Mavenを実行しようとすると終了する

Sun Java 1.6.0_24およびApache maven 3.0.3をNattyの〜/ Workに手動でインストールし、端末からmavenを実行すると終了します。

私はさまざまな他のバージョンのmaven(2.2.1、2.0.11)、以前のバージョンのjdk(1.6.0_23)を運もなく試しました。

また、tty1にログインして、そこからmvnを実行しようとしましたが、その結果、セッションが失われました(つまり、ホストログインでプロンプトが表示されます)。

私はこの動作をantで複製できるので、シェル/ターミナルエミュレーターで何かが壊れているのではないかと疑っています。

2
Raymond Kroeker

私の悪い。 Java/maven/etcを使用するように環境をセットアップするには、〜/ binにある一連のスクリプトを使用します。たとえば、〜/ bin/env-mavenです。その頭は:

#!/bin/bash
set -e

ソースとしてスクリプトを使用するには:

. ~/bin/env-maven

次に、パイプライン(コマンド)からゼロ以外の終了コードが検出された場合、すぐに終了するようにbashに指示します。私の場合、pom.xmlなしでmvnを実行します。

1
Raymond Kroeker

Mavenの複数のバージョン(Maven2とMaven3など)を実行している場合は、環境を確認して、複数のインストールを参照していないことを確認してください。

たとえば、M2_HOMEがあると、mvn 3は実行されません(注:さまざまなMavenおよびJavaを/ optにインストールしました)。

$ type mvn
mvn is /opt/maven3/bin/mvn


$ env | grep 'M.*HOME'
MAVEN_HOME=/opt/maven-1.1
M2_HOME=/opt/maven2

$ /opt/maven3/bin/mvn -v
Exception in thread "main" Java.lang.NoClassDefFoundError: org/codehaus/plexus/classworlds/launcher/Launcher
Caused by: Java.lang.ClassNotFoundException: org.codehaus.plexus.classworlds.launcher.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:307)
    at Sun.misc.Launcher$AppClassLoader.loadClass(Launcher.Java:301)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:248)
Could not find the main class: org.codehaus.plexus.classworlds.launcher.Launcher.  Program will exit.

$ unset M2_HOME

$ /opt/maven3/bin/mvn -v
Apache Maven 3.0.3 (r1075438; 2011-02-28 09:31:09-0800)
Maven home: /opt/maven3
Java version: 1.6.0_23, vendor: Sun Microsystems Inc.
Java home: /opt/Java/jdk1.6.0_23/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "2.6.35-28-generic", Arch: "AMD64", family: "unix"
1
michael