java maven忽略jenv设置

jv4diomz  于 2023-03-28  发布在  Java
关注(0)|答案(6)|浏览(137)

我安装了OSX和Java 1.6,我只是安装了jenv沿着Java 1.7

$ jenv local '1.7'
$ jenv versions
  system
  1.6
  1.6.0.65
* 1.7 (set by /Users/me/workspace/.java-version)
  1.7.0.79
  oracle64-1.6.0.65
  oracle64-1.7.0.79

jenv正在工作,$ java -version始终工作,当我将其设置为1.6时显示1.6,当我将其设置为1.7时显示1.7:

$ java -version
java version "1.7.0_79"                    <--------------------------------- YAY!!
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

...但是maven忽略了我的设置:

$ mvn -version
Apache Maven 3.0.2 (r1056850; 2011-01-08 19:58:10-0500)
Java version: 1.6.0_65, vendor: Apple Inc. <--------------------------------- BAH!!
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: en_US, platform encoding: MacRoman
OS name: "mac os x", version: "10.8.5", arch: "x86_64", family: "mac"

我发现了this SO question,其中的家伙只需要硬编码他的JAVA_HOME.mavenrc,但我不希望我的硬编码(因此jenv!),我没有一个~/.mavenrc,也没有一个/etc/mavenrc
它使用的版本似乎来自/usr/libexec/java_home输出的第一个版本,所以在短期内,我可以通过调整1.7的Info.plist文件(来自this SO post)再次获得1.6,但这只是意味着我得到的是1.6而不是1.7。
有什么想法吗

huus2vyu

huus2vyu1#

您需要安装jenv maven插件,尝试以下命令并重新加载您的shell:
jenv enable-plugin maven

9wbgstp7

9wbgstp72#

我遇到了类似的问题。我通过将所有命令前缀为jenv exec来运行:

jenv exec mvn -version
3j86kqsm

3j86kqsm3#

现在,有一个新的选项如何通过jenv导出插件设置JAVA_HOME:

jenv enable-plugin export

参见https://github.com/gcuisinier/jenv/issues/44#issuecomment-233124185

xzabzqsa

xzabzqsa4#

如果您已启用mavenexport插件,但仍有问题,请检查您没有设置JAVA_HOME~/.mavenrc文件。

kognpnkq

kognpnkq5#

如果jenv enable-plugin export仍然不起作用,则应重新启动终端并重试

ct2axkht

ct2axkht6#

我在OS X上使用pwsh,并能够在启用mavenexport插件的情况下让它工作。
但是,我遇到了以下问题:

  • 在启用maven和导出时,运行sh-enable-plugin而不是enable-pluginenable-plugin会产生“command not found”错误)。
  • 编辑mvn脚本(code "$(which mvn)")并删除JAVA_HOME=位,以便您最终得到如下内容:
#!/bin/bash
exec "/usr/local/Cellar/maven/3.8.5/libexec/bin/mvn"  "$@"

这些额外的步骤修复了我的问题,使mvn -v打印正确的JDK版本。

相关问题