Maven 尝试运行后退出

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 复制这种行为,因此我怀疑 shell/终端模拟器中出现了问题。

答案1

如果您运行了多个版本的 Maven(例如,Maven2 和 Maven3),请检查您的环境以确保您没有引用多个安装。

例如,拥有 M2_HOME 将导致 mvn 3 无法运行(注意:我在 /opt 中安装了各种 maven 和 java):

$ 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"

答案2

我的错。为了设置我的环境以使用 java/maven/etc,我在 ~/bin 中使用了一系列脚本,例如 ~/bin/env-maven;其主要内容如下:

#!/bin/bash
set -e

要使用我的脚本,请将其作为源代码:

. ~/bin/env-maven

然后,如果遇到管道(即命令)的非零退出代码,它会告诉 bash 立即退出,而在我的情况下,运行没有 pom.xml 的 mvn 就可以了。

相关内容