Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带Eclipse和Maven的OSX上的JAVA_主页_Java_Eclipse_Macos_Maven_Java Home - Fatal编程技术网

带Eclipse和Maven的OSX上的JAVA_主页

带Eclipse和Maven的OSX上的JAVA_主页,java,eclipse,macos,maven,java-home,Java,Eclipse,Macos,Maven,Java Home,我最近安装了一台OSX机器,在Eclipse中运行时,我很难让Maven将JAVA_带回家 到目前为止,我已经完成了以下工作: 在~/.bash_配置文件中使用export JAVA_HOME=$(/usr/libexec/JAVA_HOME) 在Eclipse.ini中将Eclipse的VM指定为-VM /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/bin/Java 使用echo JAVA\u HOME=\/us

我最近安装了一台OSX机器,在Eclipse中运行时,我很难让Maven将JAVA_带回家

到目前为止,我已经完成了以下工作:

  • 在~/.bash_配置文件中使用
    export JAVA_HOME=$(/usr/libexec/JAVA_HOME)
  • 在Eclipse.ini中将Eclipse的VM指定为
    -VM
    /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/bin/Java
  • 使用
    echo JAVA\u HOME=\
    /usr/libexec/JAVA\u HOME-v1.7`;sudo tee-a/etc/mavenrc在
    /etc/mavenrc
    中设置JAVA\u HOME`
  • 从CLI开始工作,一切似乎都如预期的那样<代码>java-版本打印:

    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)
    
    /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
    
    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"
    
    echo$JAVA\u HOME
    打印:

    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)
    
    /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
    
    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"
    
    mvn-v
    打印:

    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)
    
    /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
    
    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>installedjres
    中,我看到与
    Java\u HOME
    中指定的位置相同的JDK 7被设置为默认值,也用于我的项目。在嵌入式Maven运行时或外部安装之间切换会产生相同的结果

    我必须在哪里或如何设置
    JAVA\u HOME
    ,以便从Eclipse中启动的Maven进程获得正确的
    JAVA\u HOME
    位置

  • 在主目录中:(/Users/{username})

  • nano.bash_配置文件并添加以下行:

    导出
    JAVA_HOME=/Library/JAVA/JavaVirtualMachines/1.6.0\u 31-b04-413.jdk/Contents/HOME`

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


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

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

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

    setenv JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home
    
    当然,修改为实际的
    JAVA\u HOME
    值。(请注意,
    .bash\u profile
    $(/usr/libexec/java\u home)
    中常用的技巧在
    launchd.conf
    中不起作用,或者至少我无法让它起作用)

    完成此操作后,需要重新启动计算机。重新启动后,M2E Maven运行配置将能够看到
    JAVA\u HOME
    变量并正确执行


    编辑:有关我答案的详细信息,请参见此答案:

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

    他的解决方案很好,只需稍加改进

    /etc/launchd.conf
    中,放置指令就足够了

    getenv JAVA_HOME
    
    然后,在
    /etc/bashrc

    export JAVA_HOME=`/usr/libexec/java_home`
    

    然后,重新登录(不需要重新启动;-),Eclipse就会按照预期工作,w.r.t.Maven。

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

    在environment.plist中添加新行以设置首选JAVA_主页,例如

    JAVA_HOME/Library/JAVA/JavaVirtualMachines/jdk1.7.0_11.jdk/Contents/HOME


    此处设置的环境变量将被“查看”对于包括Eclipse在内的应用程序,我也遇到了同样的问题。我尝试了Robert和Jeen的解决方案,但由于某些原因它不起作用。因此,对我来说,一个非常简单的解决方案是在Eclipse中添加JAVA_HOME作为环境变量。在Eclipse项目的maven配置中,在环境变量列表中添加JAVA_HOME。

    此解决方案对我来说最好的是:

    • 添加/etc/mavenrc文件
    • 在文件中添加JAVA=“/path/到/your/jdk”
    • 无需重新启动或注销,Maven会立即进行更改

    请参阅本文中的更多详细信息。

    以上内容在约塞米蒂不再适用于图形应用程序!如eclipse或任何以Spotlight启动的应用程序。(.bash_profile,launchd.conf仅适用于终端会话。)启动eclipse之前,只需打开一个终端窗口,并发出以下命令:

    launchctl setenv JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
    
    (使用您的安装路径!可能使用$(/usr/libexec/java_home)而不是完整路径。)


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

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

    <javadocExecutable>${java.home}/../bin/javadoc</javadocExecutable>
    
    ${java.home}/./bin/javadoc
    
    完整代码:

    <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>
    
    
    org.apache.maven.plugins
    maven javadoc插件
    2.9.1
    私有的
    真的
    真的
    UTF-8
    UTF-8
    UTF-8
    ${java.home}/./bin/javadoc
    包裹
    javadoc
    
    在pom.xml中找到maven javadoc插件artifactId,打印错误并将java.home添加为javadoc可执行配置:

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

    原因:使用应用程序自己的“java.home”值是最好、最简单的方法,因为它消除了对操作系统局部变量集的依赖,这些变量集在Eclipse中的另一个容器中可能不同,也可能不同。请检查JRE for Maven是否正确地选择到JDK


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

    我已经这样做了,只是您建议使用Java 6而不是7。这有什么帮助