使用Eclipse和Maven在OSX上使用JAVA_HOME

时间:2013-12-01 14:54:26

标签: java eclipse macos maven java-home

我最近设置了一台OSX机器,在Eclipse内部运行时,我无法让Maven接收JAVA_HOME。

到目前为止,我已完成以下操作:

  1. 使用export JAVA_HOME=$(/usr/libexec/java_home)
  2. 在〜/ .bash_profile中设置JAVA_HOME
  3. 将eclipse.ini中的Eclipse指定为-vm /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/bin/java
  4. 使用/etc/mavenrc / usr / libexec / java_home -v 1.7`在echo JAVA_HOME=\中设置JAVA_HOME sudo tee -a / etc / mavenrc`
  5. 在CLI中工作一切都像预期的那样。 java -version打印:

    java version "1.7.0_45"
    Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
    Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
    

    echo $JAVA_HOME打印:

    /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
    

    mvn -v打印:

    Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 17:22:22+0200)
    Maven home: /usr/local/Cellar/maven/3.1.1/libexec
    Java version: 1.7.0_45, vendor: Oracle Corporation
    Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre
    Default locale: en_US, platform encoding: UTF-8
    OS name: "mac os x", version: "10.9", arch: "x86_64", family: "mac"
    

    从CLI中运行项目内的mvn install也可以。但是,从Eclipse中执行相同操作会失败,并显示以下内容:

    Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.9.1:jar (attach-javadocs) on project suppress-warnings: MavenReportException: Error while creating archive: Unable to find javadoc command: The environment variable JAVA_HOME is not correctly set.
    

    Eclipse > Preferences > Java > Installed JREs中,我发现JDK 7与JAVA_HOME中指定的位置相同,设置为默认值,也用于我的项目。在嵌入式Maven运行时或外部安装之间切换会产生相同的结果。

    我必须在何处或如何设置JAVA_HOME以便从Eclipse中启动Maven流程才能获得正确的JAVA_HOME位置?

11 个答案:

答案 0 :(得分:13)

问题是在Mac OSX上,.bashrc.bash_profile中定义的环境变量仅导出到终端环境。像Eclipse这样的捆绑GUI应用程序看不到它们,因此也没有从Eclipse执行任何运行配置。

解决方案是创建(如果它不存在)或编辑文件/etc/launchd.conf并向其添加以下行:

setenv JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home

当然,修改为您的实际JAVA_HOME值。 (请注意.bash_profile $(/usr/libexec/java_home)中常用的诀窍在launchd.conf中不起作用 - 或者至少我无法使其工作)

完成此操作后,您需要重启机器。重启后,M2E Maven运行配置将能够看到JAVA_HOME变量并正确执行。

答案 1 :(得分:3)

我无法评论Jeen Broekstra的答案因为我是新手: - (

他的解决方案很好,只需要稍微改进一下。

/etc/launchd.conf中输入指令就足够了

getenv JAVA_HOME

然后,在/etc/bashrc

export JAVA_HOME=`/usr/libexec/java_home`

然后,重新登录(没有必要重新启动;-)并且Eclipse按预期工作w.r.t.行家。

答案 2 :(得分:3)

以上内容在YOSEMITE中不再适用于图形应用程序!像eclipse,或者任何以Spotlight开头的东西。 (.bash_profile,launchd.conf仅适用于终端会话。)在启动eclipse之前,只需打开一个终端窗口,然后发出以下命令:

var userData = JsonConvert.DeserializeObject<MyClass>(json);

foreach (ListItem item in userData.List)
{
    Console.WriteLine("a: {0}", item.A);
    Console.WriteLine("b: {0}", item.B);
    Console.WriteLine();
}

(使用您的安装路径!也许可以使用$(/ usr / libexec / java_home)而不是完整路径。)

在此查看有关永久解决方案的完整优秀文章:通过launchd.conf设置环境变量在OS X Yosemite中不再有效?

答案 3 :(得分:2)

Eclipse使您能够指定启动环境变量。在那里做。

答案 4 :(得分:2)

此解决方案最适合我:

  • 添加/ etc / mavenrc文件。
  • 将JAVA =&#34; / path /添加到/ your / jdk&#34;在文件中。
  • 无需重启或退出,Maven立即接收更改。

详情请见blog

答案 5 :(得分:1)

解决此问题的简单方法,将以下配置添加到pom.xml

<javadocExecutable>${java.home}/../bin/javadoc</javadocExecutable>

完整代码:

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.9.1</version>
            <configuration>
                <show>private</show>
                <nohelp>true</nohelp>
                <aggregate>true</aggregate>
                <charset>UTF-8</charset>
                <encoding>UTF-8</encoding>
                <docencoding>UTF-8</docencoding>
                <javadocExecutable>${java.home}/../bin/javadoc</javadocExecutable>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>javadoc</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

答案 6 :(得分:0)

  1. 在您的主目录中:(/ Users / {username})

  2. nano .bash_profile并添加以下行:

      

    出口
      JAVA_HOME = /库/爪哇/ JavaVirtualMachines / 1.6.0_31-b04-413.jdk /内容/ Home`

  3. 确保路径“/Library/Java/JavaVirtualMachines/1.6.0_31-b04-413.jdk/Contents/Home” 存在。

答案 7 :(得分:0)

您可能正在寻找〜/ .MacOSX / environment.plist

向environment.plist添加一个新行,以设置首选的JAVA_HOME,例如

JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_11.jdk/Contents/Home

此处设置的envvars将被包括Eclipse

在内的应用程序“看到”

答案 8 :(得分:0)

我遇到了同样的问题。试过罗伯特和杰恩的解决方案,但由于某种原因它没有用。所以一个非常简单的解决方案对我有用,就是在eclipse中添加JAVA_HOME作为环境变量。在eclipse项目中&#39; s maven配置在环境变量列表中添加JAVA_HOME。

答案 9 :(得分:0)

在pom.xml中找到maven-javadoc-plugin artifactId,打印错误并将java.home添加为javadocExecutable配置:

<plugin>
    ...
    <artifactId>maven-javadoc-plugin</artifactId>
    <configuration>
      <javadocExecutable>${java.home}/../bin/javadoc</javadocExecutable>
    </configuration>
    ...
</plugin>

原因:使用应用程序自己的'java.home'值是最好和最简单的方法,因为它删除了对操作系统局部变量集的依赖性,这可能会或可能不会在另一个容器中有所不同

答案 10 :(得分:0)

在Eclipse中检查是否正确选择了JRE for Maven到JDK。

Maven Runner Java Runtime(JRE)需要指定 JDK(而不是JRE),因为javadoc命令不包含在JRE中。因此Use Internal JRE不适用于maven attach-javadocs。