当我尝试使用Maven编译项目时,我收到以下错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project webserverlog: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project webserverlog: Compilation failure
No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
我的JAVA_HOME指向JDK:
$ echo $JAVA_HOME
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
$ $JAVA_HOME/bin/javac -version
javac 1.7.0_25
javac: no source files
Usage: javac <options> <source files>
我不确定Maven为什么在JAVA_HOME的末尾添加'/ jre',但是看一些其他帖子这似乎不是问题:
$ mvn --version
Apache Maven 3.0.4 (r1232337; 2012-01-17 18:44:56+1000)
Maven home: /Users/jerry/dev/springsource/apache-maven-3.0.4
Java version: 1.7.0_25, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.8.4", arch: "x86_64", family: "mac"
我已经搜索了这个问题的解决方案并在过去几天尝试了不同的东西,但找不到任何有用的东西。我见过一些有类似问题的主题,但没有一个建议对我有用。
有谁知道如何解决这个问题?任何帮助都非常感谢...
答案 0 :(得分:3)
您应该将JDK的实际路径分配给JAVA_HOME变量,而不是保留CurrentJDK文字。出于某些原因,在Mac OS X中,CurrentJDK并未指向有关Maven的实际内容。在你的.profile中尝试这样的东西但是替换你的实际jdk文件夹名称:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
答案 1 :(得分:0)
仅供参考,&#34;没有源文件&#34;在tmp点的任何地方都缺少磁盘空间。
看起来maven和javac在TEMP / TMP / TMDIR中存储了一些项目,如果导演不存在,缺少空间,缺少权限,那么你可以看到这个问题。至少我们在Windows上做过,我怀疑它也会在更好的操作系统上发生。