【问题标题】:Compilation error Multiple version of JAVA编译错误多版本JAVA
【发布时间】:2016-08-18 12:12:13
【问题描述】:

当我在 Eclipse 中运行我的 Maven 构建时,我遇到了以下问题。我看到很多这样的帖子,但我仍然无法解决这个问题。我的可能更具体一点,我知道我的 JAVA_HOME 指向 java6,那是因为我正在开发另一个使用 java 6 的应用程序。我遇到问题的应用程序使用 Java 8

 [ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- 
 [ERROR] Unable to locate the Javac Compiler in: C:\Program Files\Java\jre1.8.0_92\..\lib\tools.jar Please ensure you are using JDK 1.4 or above and not a JRE (the com.sun.tools.javac.Main class is required). .In most cases you can change the location of your Java installation by setting the JAVA_HOME environment variable. [INFO] 1 error 
 <br>[INFO] ------------------------------------------------------------- 
 <br>[INFO] ------------------------------------------------------------------------ 
 <br>[INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ 
 <br>[INFO] Total time: 11:53 min [INFO] Finished at: 2016-08-18T16:52:13+05:30 
 <br>[INFO] Final Memory: 11M/141M 
 <br>[INFO] ------------------------------------------------------------------------ 
 <br>[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project 
 Compilation failure [ERROR] Unable to locate the Javac Compiler in: [ERROR] C:\Program Files\Java\jre1.8.0_92\..\lib\tools.jar 
 [ERROR] Please ensure you are using JDK 1.4 or above and [ERROR] not a JRE (the com.sun.tools.javac.Main class is required). 
 <br>[ERROR] In most cases you can change the location of your Java [ERROR] installation by setting the JAVA_HOME environment variable. 
 [ERROR] -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile 

如何在不安装 java 8 的情况下解决此问题,因为它可能会更改我的 JAVA_HOME 等,这会使我的其他应用程序无法运行。有没有办法在不运行 .exe 的情况下获取 JDK 文件夹(ps 我已经尝试过 7zip 方法) 请推荐

【问题讨论】:

  • 你可以从其他电脑复制
  • 你可以下载.exe,解压,然后运行unpack200工具(自带)将.pack文件解压到.jar库中,就可以正常使用了很好。
  • @A_Di-Matteo,我该如何解压?
  • 你能找到你的pom.xml 吗?
  • 不要下载.exe 对不起,下载tar.gz,它也适用于Windows,你只需用7zip解压即可

标签: java eclipse maven java-8


【解决方案1】:

如果你有jdk8那么你可以打开cmd,在这个窗口运行命令修改JAVA_HOMEset JAVA_HOME=&lt;jdk8 path&gt;。这将只为这个 cmd 会话实例而不是整个操作系统修改 JAVA_HOME 环境变量。现在从这个窗口运行 maven build 命令,它不会失败。

如果你想从 eclipse 运行构建,那么在 eclipse 中尝试进入 Windows --> Preferences --> Java --> Installed JREs --> 点击 Add 按钮 --> Sel Standard VM 然后点击 next -->将“JRE Home”的值作为路径输入到 jdk 文件夹,将“JRE Name”输入为 java8 或任何您希望的值 -> 单击“完成”。 现在右键单击您感兴趣的项目 --> 单击属性 --> Java 编译器 --> 勾选“启用项目特定设置” --> 并在此处选择 1.8。 如果此处看不到 1.8,请转到 Java Build Path --> Add Library --> JRE System Library --> Alternate JRE --> 选择 jdk8 --> Finish

【讨论】:

  • 如果我从 cmd 窗口运行构建,这将是一个很好的解决方案。我正在从 eclipse 运行 maven
  • 在 Eclipse 中,对于 maven 构建来说重要的是该构建的启动配置是指 JDK,而不是 JRE。将 JDK 设为您的默认 JRE 应该可以解决所有未来启动配置的问题。此处不需要更改项目设置。
  • @StephanHerrmann - 我推荐了项目特定设置,因为问题中有以下一行:“我正在开发另一个使用 java 6 的应用程序”。只有这个应用需要java8。
  • @StephanHerrmann - 用户不想更改 JAVA_HOME,所以我假设他不想更改 Eclipse 默认 jdk
【解决方案2】:

查看该错误 (C:\Program Files\Java\jre1.8.0_92\..\lib\tools.jar) 中的路径,您已经安装了 Java 运行时环境 (JRE)。

要编译 java,您需要 Java Development Kit (JDK),其中包含 maven 插件所需的工具。

【讨论】:

  • 或者你的 JAVA_HOME 指向 JRE 而不是 JDK。在这两种情况下,答案都是使用 JDK 而不是 JRE 来构建您的项目
【解决方案3】:

您可以将您的 maven-compiler-plugin 配置更改为您的 JAVA_HOME。 只需转到 eclipse window->preferences->type maven-> 你会看到类似 template 的东西点击它并寻找 javac 编译器,去那里改成你有的任何java版本。

     <configuration>
      <!-- http://maven.apache.org/plugins/maven-compiler-plugin/ -->
      <source>${cursor}1.6</source>
      <target>1.6</target>
     </configuration> 

如果没有 java8 和 .exe 文件,您将无法满足您的要求。 希望有用。

【讨论】:

    【解决方案4】:

    从您的错误日志中可以看出

    [ERROR] Unable to locate the Javac Compiler in: [ERROR] C:\Program Files\Java\jre1.8.0_92\..\lib\tools.jar

    将此代码粘贴到build 标记内的pom.xml 中,并确保正确添加依赖项,请更改您的java version accordingly

    这只有在您的pom.xml 有问题时才有效。

    <plugins>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
    <source>1.8</source>
    <target>1.8</target>
    <verbose>true</verbose>
    <fork>true</fork>
    <executable>${JAVA_HOME}/bin/javac</executable>
    <compilerVersion>1.8</compilerVersion>
    </configuration>
    </plugin>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.4.2</version>
    <configuration>
    <jvm>${JAVA_HOME}/bin/java</jvm>
    <forkMode>once</forkMode>
    </configuration>
    </plugin>
    </plugins>
    

    注意你的JAVA_HOME必须这样指向

    C:\Program Files\Java\jdk1.8.0_65

    编辑

    肯定有各种原因

    你的 pom 没有获取到 java home 的路径

    你的 java home 没有设置

    您在 IDE 中使用 jre 而不是 jdk

    【讨论】:

      【解决方案5】:

      您可以下载没有安装程序的 JDK 版本。 然后在您遇到问题的 pom.xml 的编译器配置中指定 JDK 1.8 作为源和目标。这样你就不需要改变你的JAVA_HOME

      <build>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <configuration>
                  <source>1.8</source>
                  <target>1.8</target>
                  <compilerVersion>1.8</compilerVersion>      
                  <fork>true</fork>
                  <executable>D:\jdk1.8\bin\javac</executable>                
              </configuration>
          </plugin>
      <build>
      

      【讨论】:

      • D:\jdk1.8\bin\javac你还需要安装java
      【解决方案6】:

      我按照以下链接中的步骤获取了可移植的 JDK: http://bgasparotto.com/convert-jdk-exe-zip/

      【讨论】:

        猜你喜欢
        • 2020-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-08
        • 1970-01-01
        • 2012-11-21
        • 2015-06-14
        • 1970-01-01
        相关资源
        最近更新 更多