繁体   English   中英

Maven软件包编译错误

[英]Maven Package Compilation Error

我在Eclipse中使用Maven创建了一个webapp项目。 当我在命令提示符下运行命令mvn软件包时,它显示以下错误。

[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.310s
[INFO] Finished at: Tue Mar 05 14:32:23 IST 2013
[INFO] Final Memory: 16M/218M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.0:compile (default-compile) on project  Compilation fa
ilure
[ERROR] ***No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?***
[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

我试图更改JDK和JRE。 但不起作用。 仍然显示相同的错误

Windows C:\\Program Files\\Java\\jdk1.6.xx\\lib\\tools.jar 位中 ,存在一个权限问题,该问题阻止安装程序将文件C:\\Program Files\\Java\\jdk1.6.xx\\lib\\tools.jar到本地。 这个jar文件是maven-compiler-plugin版本3.x而不是通常的javac

解决方案:以管理员身份运行Java JDK安装程序! 并确保tools.jar位于C:\\Program Files\\Java\\jdk1.6.xx\\lib\\

如果您使用的是m2e maven集成插件,则希望通过Eclipse中的以下步骤查看该文件对Eclipse可见:

  • 转到窗口->首选项-> Java->已安装的JRE
  • 选择您正在使用的JDK(C:\\ Program Files \\ Java \\ jdk1.6.xx)
  • 按Edit查看jar列表,​​包括tools.jar,OW,您可以将其添加为Add External JAR。

然后通过以下步骤配置Maven运行:

  • 运行->运行配置->填写名称,基本目录和目标。
  • 然后在同一窗口中,移至“ JRE”选项卡并指向“ JDK” \\ jdk1.6.xx \\

转到“运行时配置”,然后将JRE配置为JDK。

选择适合您的运行时的JDK

或按照@PawanKumarBaranwal的建议,设置您的默认JDK。 但是请注意是否配置了多个JRE。

选择默认的JRE

对我而言(32位Windows 7)有用的是将以下内容添加到您的路径环境变量中:

%JAVA_HOME%\\ lib;

尝试这个。 转到窗口->首选项-> Java->已安装的JRE。

双击已安装的JRE内部的JRE。

在JRE Home中提供JDK路径(例如C:\\Program Files\\Java\\jdk1.7.0_80\\ ),并将JRE名称命名为JDK。 单击完成,然后单击确定。

对我来说,它奏效了。

在我的情况下,错误“在此环境中未提供编译器。也许您在JRE而不是JDK上运行”是由于JRE安装在与JDK默认设置不同的位置。

在64位linux下运行,我在/opt/java安装了Oracle的64位JDK SE 1.6.0_45。 32位和64位JRE安装在/opt/java/jre32/opt/java/jre64 ,并带有jre符号链接:(即ln -s jre64 jre ),因此jre- jre -> ./jre64 (meaning / opt / jdk / jre was a symlink referencing / opt / jdk / jre64 was a symlink referencing

一旦将jre64重命名为jre(即rm jre ; mv jre64 jre ; ln -s jre jre64 ),此问题就消失了; 而且我能够使用Maven(在netbeans内部)进行构建。

Maven似乎在查看JRE路径,并说“ jre64不是默认的JRE-inside-of-JDK安装的正确名称,因此假设JDK在../处不存在”,这将阻止它解决包含tools.jar等的JDK lib目录的位置

尚未测试过,但是如果JRE不在默认位置(或者可能不在%JAVA_HOME%\\jre目录中),则在Windows下可能会发生相同的情况。 如果同时安装了JDK和JRE,则Oracle的安装程序要在%JAVA_HOME%\\jre6而不是%JAVA_HOME%\\jr e处安装JRE。 这可能是因为JDK卸载过程需要\\jre目录。 如果JRE已安装在\\jre目录中JDK的JRE顶部,而不是\\jre 6处,则除非卸载\\ jre目录,卸载JRE和\\jre ,否则在卸载JRE之后卸载JDK将失败\\jre复制将还原到\\jre

转到preferences>installed JRE>

然后点击add

选择C:\\program files\\java\\

enter

它将搜索除jdk之外的其他jre,然后选择未选择的内容

有几个选项可以指定。

步骤:在项目资源管理器中的项目上,转到运行->运行配置->单击Maven构建->单击构建配置/或创建一个新配置。 您将在下面看到窗口作为给定的快照,单击那里的JRE选项卡。

您会看到有3个选项1)工作区默认JRE 2)执行环境3)备用JRE 1)工作区默认JRE是从顶部的“窗口”菜单中设置->首选项-> Java->已安装的JRE-在这里您可以添加jdk 2)执行环境jdk可以在pom.xml中设置

<build>
<plugins>
    <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
            <fork>true</fork>
        <executable>C:\Program Files\Java\jdk1.7.0_45\bin\javac.exe</executable>
    </configuration>
</plugin>

3)备用JRE可用于从目录中选择一个jdk

转到Windows->首选项-> Java->已安装的JRE

可能是jre已添加 在此处输入图片说明

单击添加->标准VM->下一步->目录

并浏览我的案例路径中的JDK是C:\\Program Files\\Java\\jdk1.8.0_111

然后点击完成。

你会看到这样的窗口

在此处输入图片说明

选择JDK-> Apply-> Ok

并且您完成了。

以下面的方式设置路径

将jdk的路径放在path变量中的第一位,以便其他Java路径将被忽略。 编译错误将得到解决。

在创建了第二个工作空间以在单独的源代码分支中工作之后,我遇到了一个奇怪的情况,我可以在新工作空间中从命令行进行Maven构建,但不能在Eclipse中进行。 我尝试按照其他人的描述将JRE配置设置为JDK,但还是没有运气。 最后,我不得不搜索新工作区的.metadata目录的全部内容,以找到拒绝重新配置的有问题的文件。 罪魁祸首是

.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.launching.prefs

尽管更改了配置,但它仍然指向错误的目录。 我进行了手动编辑以提供正确的JDK名称和位置。 我还编辑了下面的文件

.plugins/org.eclipse.debug.core/.launches

这些都同样指向JRE而不是JDK。 完成这些编辑后,我可以从Eclipse中而不是仅从命令行在第二个工作区中构建项目。

  1. 检查您的安装JDK及其路径- 下载链接

  2. 检查环境变量的路径- 检查

  3. 添加eclipse windows->preferences->Java->installed JREs->add->standart VM -> JRE home (jdk path exmp:'C:\\Program Files\\Java\\jdk1.8.0_221')然后应用。

  4. 右键单击您的project -> properties -> select (Libraries -> JRE System libraries) -> edit -> choose workspace default JRE (JDK.1.8.0_221)

  5. 右键单击您的项目-> Maven更新清理并再次安装项目。

我正在使用适用于Eclipse(V3.3)的maven插件,并且在一段时间内一直在解决此错误。 我终于找到了与过时的Java源链接的解决方案:它与JRE或JDK无关(我使用JRE 1.7)。

我在其他论坛上发现这是maven-compiler-plugin中的已知问题(V3.3和3.5.1的结果相同)。

因此,我只是手动重新编译了陈旧的源代码并再次运行了目标,这次没有任何问题。

要找出陈旧的源代码,请使用选项-X(调试)运行目标,并查找以开头的条目

[DEBUG] Stale source detected:

指示一个Java类文件(要手动重新编译...)。

希望这可以是有用的,因为maven编译器给出的消息使我搜索方向错误(使用JRE,JDK,JAVA-HOME等)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM