我下载了一个Github项目,我的团队将为其进行开发工作(它是私有的,所以分享它不会有帮助)。 它包含一个具有以下依赖关系的pom.xml文件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
这个项目取决于拥有Java 7。 在其他人的案例中研究这个问题 - 看起来他们的版本在java和mvn以及JAVA_HOME环境变量之间是不一致的,所以让我向你展示一些终端输出:
Last login: Thu Jun 5 13:05:34 on console
$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home
$ mvn -version
Apache Maven 3.2.1 (ea8b2b07643dbb1b84b6d16e1f08391b666bc1e9; 2014-02-14T12:37:52-05:00)
Maven home: /usr/local/apache-maven-3.2.1
Java version: 1.7.0_60, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.9", arch: "x86_64", family: "mac"
$ java -version
java version "1.7.0_60"
Java(TM) SE Runtime Environment (build 1.7.0_60-b19)
Java HotSpot(TM) 64-Bit Server VM (build 24.60-b09, mixed mode)
$ javac -version
javac 1.7.0_60
看起来Java 7已成功安装在我的Mac上,JAVA_HOME的环境变量已正确设置,maven声称拥有我需要的Java版本。
在我从Github克隆的那个项目的顶级目录中,我将调用&#34; githubproject&#34;,我运行:
sudo mvn clean install
它运行良好,输出一段时间......直到这个:
[INFO] Compiling 239 source files to /usr/local/gardens/githubproject/target/classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] Failure executing javac, but could not parse the error:
javac: invalid target release: 1.7
Usage: javac <options> <source files>
use -help for a list of possible options
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 18.793 s
[INFO] Finished at: 2014-06-05T13:08:38-05:00
[INFO] Final Memory: 26M/123M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project hgtvgardens: Compilation failure
[ERROR] Failure executing javac, but could not parse the error:
[ERROR] javac: invalid target release: 1.7
[ERROR] Usage: javac <options> <source files>
[ERROR] use -help for a list of possible options
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
所以这里有一个有趣的事情是,如果我进入那个pom.xml文件 - 我可以将依赖关系从1.7更改为1.6,并且mvn clean install命令运行良好的构建成功... 但是,该项目存在各种Java错误,需要Java 7来编译某些部分(尽管项目的其他部分仍然有效)。
我最好的猜测是它是一个环境问题 - 但为什么会出现问题,哪里可以呢?
在研究中,其他人通过将tools.jar复制到/ Library / Java / Extensions /中解决了他们的问题 - 我做了 - 但没有结果。
为什么不安装Java for Mac会解决这些问题,因为在〜/ .bash_profile
中设置JAVA_HOME之外我没有做太多的自定义Java设置我需要更改系统链接吗?
我的一个团队成员跑了
sudo rm /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/ /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
它修复了他的构建错误 - 但是他遇到的问题似乎是项目编译错误。
其他团队成员完全没有问题 - 相同的操作系统,硬件,Github项目和软件......有些不同 - 而且我不确定是什么......
有人建议使用更新的maven编译器。
从http://search.maven.org/#artifactdetails|org.apache.maven.plugins|maven-compiler-plugin|3.1|maven-plugin下载了maven-compiler-plugin-3.1.jar 并将其复制到我的apache-maven / lib目录中(这是一个完整的猜测)。 然后我更新了pom.xml以使用3.1而不是2.3.2
结果:
[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-compiler-plugin:3.1:compile
(default-compile) on project githubproject: Execution default-compile of goal
org.apache.maven.plugins:maven-compiler-plugin:3.1:compile failed:
A required class was missing while executing
org.apache.maven.plugins:maven-compiler-plugin:3.1:compile:
org/codehaus/plexus/compiler/util/scan/mapping/SuffixMapping
我可能做错了。
我想出来了 - 权限不允许访问该githubproject中的文件。我只需要更改这些文件的权限,并成功构建。 (将编译器插件放在我的mavin lib目录下打破了maven一段时间,但我终于摆脱了那个位置不佳的jar)。 感谢所有给予关注的人 - 错误是一个红色的鲱鱼。
答案 0 :(得分:0)
我已经完全取代了我的Mac OS Java 1.7,直接从Sun下载。它确实需要对CurrentJDK
的链接进行一些修改,但这是结果。希望这会有所帮助,因为看起来你的Java安装有点破坏了:
哪个OS:
System Version: OS X 10.9.3 (13D65)
Kernel Version: Darwin 13.2.0
我有哪个java以及它在哪里:
schroedinger:backend olegs$ javac -version
javac 1.7.0_40
schroedinger:backend olegs$ which javac
/usr/bin/javac
那么它实际安装在哪里以及如何:
schroedinger:Versions olegs$ ls -la /usr/bin/javac
lrwxr-xr-x 1 root wheel 75 31 Okt 2013 /usr/bin/javac -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javac
schroedinger:Versions olegs$ pwd
/System/Library/Frameworks/JavaVM.framework/Versions
Current
下实际存在哪个JVM。注意有CurrentJDK
(指向不同位置的1.6)和Current
(指向1.7)。实际的1.7 JDK安装在目录1.7:
schroedinger:Versions olegs$ ls -la
total 64
drwxr-xr-x 11 root wheel 374 31 Okt 2013 .
drwxr-xr-x 12 root wheel 408 21 Apr 19:42 ..
lrwxr-xr-x 1 root wheel 10 31 Okt 2013 1.4 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 31 Okt 2013 1.4.2 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 31 Okt 2013 1.5 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 31 Okt 2013 1.5.0 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 31 Okt 2013 1.6 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 31 Okt 2013 1.6.0 -> CurrentJDK
drwxr-xr-x 8 root wheel 272 31 Okt 2013 1.7
lrwxr-xr-x 1 root wheel 1 31 Okt 2013 Current -> 1.7
lrwxr-xr-x 1 root wheel 59 31 Okt 2013 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents
我的pom说了什么:
schroedinger:backend olegs$ grep jdk.version pom.xml
<jdk.version>1.7</jdk.version>
...
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
</configuration>
我需要JAVA_HOME
吗?号:
schroedinger:backend olegs$ echo $JAVA_HOME
我的妈妈是什么?它随homebrew
安装:
schroedinger:backend olegs$ which mvn
/usr/local/bin/mvn
schroedinger:backend olegs$ ls -la /usr/local/bin/mvn
lrwxr-xr-x 1 dev staff 29 31 Okt 2013 /usr/local/bin/mvn -> ../Cellar/maven/3.0.5/bin/mvn
是否编译?
schroedinger:backend olegs$ mvn clean install
[INFO] Scanning for projects...
[INFO]
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.407s
[INFO] Finished at: Thu Jun 05 20:35:48 CEST 2014