为什么 Maven 使用 JDK 1.6 但我的 java 版本是 1.7

2024-10-31 08:38:00
admin
原创
43
摘要:问题描述:我已经在终端中设置了 maven,获取版本设置(使用mvn -v)时,它似乎使用 JDK 1.6,而我安装的是 JDK 1.7。有什么问题吗?我输入的命令如下:blues:helloworld Ninja$ java -version java version "1.7.0_05&...

问题描述:

我已经在终端中设置了 maven,获取版本设置(使用mvn -v)时,它似乎使用 JDK 1.6,而我安装的是 JDK 1.7。有什么问题吗?

我输入的命令如下:

blues:helloworld Ninja$ java -version
java version "1.7.0_05"
Java(TM) SE Runtime Environment (build 1.7.0_05-b06)
Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode)`
blues:helloworld Ninja$ mvn -v
Apache Maven 3.1.0 (893ca28a1da9d5f51ac03827af98bb730128f9f2; 2013-06-28 10:15:32+0800)
Maven home: /usr/local/Cellar/maven/3.1.0/libexec
Java version: 1.6.0_51, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: zh_CN, platform encoding: EUC_CN
OS name: "mac os x", version: "10.8.4", arch: "x86_64", family: "mac"

解决方案 1:

将以下内容添加到您的~/.mavenrc

export JAVA_HOME=/Library/Java/JavaVirtualMachines/{jdk-version}/Contents/Home

第二种解决方案:

echo export "JAVA_HOME=$(/usr/libexec/java_home)" >> ~/.bash_profile

解决方案 2:

进入

/System/Library/Frameworks/JavaVM.framework/Versions

并更新CurrentJDK符号链接以指向

/Library/Java/JavaVirtualMachines/YOUR_JDK_VERSION/Contents/

例如

cd /System/Library/Frameworks/JavaVM.framework/Versions
sudo rm CurrentJDK
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/ CurrentJDK

现在它就可以立即起作用了。

解决方案 3:

你也可以这样做,

<properties>
      ...  

      <!-- maven-compiler-plugin , aka JAVA Compiler 1.7 -->
      <maven.compiler.target>1.7</maven.compiler.target>
      <maven.compiler.source>1.7</maven.compiler.source>

      ...  
</properties>

解决方案 4:

您还可以明确告诉 maven 要为哪个 java 版本进行编译。您可以尝试将其添加maven-compiler-plugin到您的 pom 中。

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>

如果您将 maven 项目导入 IDE,那么您的 IDE 中可能有一个 maven 设置,用于设置 maven 运行器正在使用的默认编译器。

解决方案 5:

它对我有帮助。只需将其添加到您的 pom.xml 中即可。

默认情况下,maven 编译器插件使用 Java 1.5 或 1.6,您必须在 pom.xml 中重新定义它。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

解决方案 6:

对于 Eclipse 用户。例如,如果您有一个执行清理包的运行配置。

在运行配置面板中有一个 JRE 选项卡,您可以在其中指定应针对哪个运行时运行。请注意,此配置将覆盖 pom.xml 中的任何内容。

解决方案 7:

我对这个问题迟到了,但我认为处理 MacOS 上的 JDK 版本的最佳方法是使用以下脚本:http: //www.jayway.com/2014/01/15/how-to-switch-jdk-version-on-mac-os-x-maverick/

解决方案 8:

请检查兼容性。我花了mvn 3.2.1jdk 1.6.0_37几个小时才搞定。所有变量都设置好了,但不起作用。最后我升级了jdk to 1.8.0_60,并且mvn 3.3.3成功了。环境变量如下:

JAVA_HOME=C:ProgramFilesJavajdk1.8.0_60 
MVN_HOME=C:ProgramFilesapache-mavenapache-maven-3.3.3 
M2=%MVN_HOME%in extend system level Path- ;%M2%;%JAVA_HOME%in;

解决方案 9:

@MasterGaurav 的解决方案非常有效。

我通常将 Java switch 语句放入 zsh 函数中:

alias java_ls='/usr/libexec/java_home -V 2>&1 | grep -E "d.d.d[,_]" | cut -d , -f 1 | colrm 1 4 | grep -v Home'

function java_use() {
    export JAVA_HOME=$(/usr/libexec/java_home -v $1)
    echo export "JAVA_HOME=$(/usr/libexec/java_home -v $1)" > ~/.mavenrc
    export PATH=$JAVA_HOME/bin:$PATH
    java -version
}

您可以运行java_ls以获取机器上所有可用的 JVM,

然后java_use 1.7将 1.7 用于 Java 和 Maven。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用