【问题标题】:JDEE cannot find JDK's tools jar file on OS XJDEE 在 OS X 上找不到 JDK 的工具 jar 文件
【发布时间】:2013-11-29 01:02:02
【问题描述】:

我正在尝试为 OS X 上的 emacs 24 配置 JDEE。 当我创建一个 .java 文件时,环境似乎是自动加载的(请看图片),所以它似乎安装正确。但是,当我尝试使用 M-x jde-complete 自动完成任何事情时 (我还没有将它绑定到任何键上)我收到以下消息:

找不到 JDK 的工具 jar 文件(或等效文件)。键入 M-x describe-function [RET] jde-get-jdk-dir 了解更多信息。

我运行 /usr/libexec/java_home 来找到我的 Java 主页并将其设置在我的 ~/.bash_profile 中:

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home"

然后我将 JDEE 配置为指向 ~/.emacs 中的 JDK:

(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(jde-jdk (quote ("1.7.0_17")))
 '(jde-jdk-registry (quote (("1.7.0_17" . "/Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home")))))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 )

谁能告诉我为什么自动完成不起作用?我相信我设置的 JDEE 的任何部分目前都没有工作,但是,我使用自动完成来测试,因为这是我开始工作的主要优先事项。

更新:如果我使用M-x jde-compile,它会说

JDE 无法识别 JDK 1.7 javac。假设 JDK 1.6 javac?(是或否)

它似乎找到了我的 JDK。如果我输入yes,它会给出同样的错误(Cannot find JDK's tools jar file (or equivalent)

【问题讨论】:

    标签: java macos emacs jdee


    【解决方案1】:

    我关注了this guide,现在它可以工作了。我认为他们的关键是添加两个 JDK,然后选择您要使用的一个。似乎 JDEE 可能不适用于仅添加一个 JDK。 但是,现在我收到错误“无法在此终端上放置 GUI 菜单”,但我想这是另一个问题。

    【讨论】:

      【解决方案2】:

      您可以按照this guide 中的说明获取新鲜的 CEDET 并进行设置。自 2012 年 11 月/12 月以来,CEDET 改进了对 Java 的支持,包括名称补全,包括 JDK 的自动检测(在 Linux 和 Mac OS X 上测试),另外还有 maven 和 ant 的基本 EDE 项目(对于 Maven,EDE 可以提取依赖项列表,并使用它们来构建名称完成)。

      这是 Maven 项目的名称完成示例:

      【讨论】:

        【解决方案3】:

        适用于 Mavericks 上的 JDK 1.7、Aquamacs 2.5、JDE 2.4.0.1

        JDE 正在 JAVA_HOME 下寻找“Classes/classes.jar”(当它试图找到“lib/tools.jar”的 darwin 等效项时)。

        您可以通过创建这样的别名来帮助它:

        sudo mkdir /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/Classes
        sudo ln -sfv /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/lib/tools.jar /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/Classes/classes.jar
        

        重新启动emacs,完成应该可以工作

        有一个更新的 JDE 2.4.1 我没有尝试过

        【讨论】:

        • 我认为这是正确的解决方案。 Oracle 改变了 JDK 的结构,我认为对于基于 classes.jar 先前位置的假设的工具来说,这是解决这个问题的最简洁方法
        猜你喜欢
        • 1970-01-01
        • 2015-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-10
        • 2011-07-31
        • 1970-01-01
        相关资源
        最近更新 更多