13

我正在使用 Eclipse (Indigo SR2) 开发一个 Scala 项目。今天我将我的机器更新为 Mountain Lion,因为我们需要 JDK 7 的一些功能。安装 JDK 7 工作正常:

$ java -version
java version "1.7.0_13"
Java(TM) SE Runtime Environment (build 1.7.0_13-b20)
Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)

在 Eclipse 中,我更改了以下设置:

  • Java => 编译器 => 已安装的 JRE:使用路径添加 JDK1.7.0/Library/Java/JavaVirtualMachines/jdk1.7.0_13.jdk/Contents/Home
  • Java => 编译器 => 已安装的 JRE => 执行环境:将 JavaSE-1.7 设置为JDK1.7.0
  • Java => 编译器:合规级别:1.7
  • Scala => 编译器:目标 = jvm-1.7

然后我重新启动 Eclipse 并尝试运行脚本。但是,我总是得到错误:

value getPlatformMXBean is not a member of object java.lang.management.ManagementFactory

所述方法仅在 Java 1.7 中可用,并且 Eclipse 似乎没有找到它,尽管命令单击它会显示类中的功能ManagementFactory。关于 Eclipse => 配置显示它仍在使用 JDK 6 ( java.runtime.version=1.6.0_37-b06-434-11M3909),但我需要 JDK 7。

所以我尝试了以下方法(如 StackOverflow 和其他网站上所述):

  • 添加-vm /Library/Java/JavaVirtualMachines/jdk1.7.0_13.jdk/Contents/Home/bin/java到eclipse.ini文件(根据eclipse网站仔细检查路径,文件中的正确位置,并在中间添加换行符)
  • 将相同的内容添加到 Info.plist
  • $ /Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse -vm /Library/Java/JavaVirtualMachines/jdk1.7.0_13.jdk/Contents/Home/
  • 创建从 1.6 到 1.7 的符号链接

但运气不好,Eclipse 一直只从 JDK-6 开始。奇怪的是,我可以将 JRE 显式更改Run=>Run Configurations为 JDK7,它会以这种方式运行。但我不想为每个可运行文件更改它。

有什么进一步的建议吗?


感谢 EECOLOR 的提示,我能够在 JDK7 运行良好的 Eclipse Juno 中使用 Scala 插件。但是,现在我遇到了似乎是依赖问题。我得到的异常可以在这里看到:https ://gist.github.com/anonymous/ac0f3a3655419e5149fa

奇怪的是,当我从命令行使用简单的java -cp JARFILE com.AND-SO-ON.file. 为了构建源代码和获取依赖项,我们使用 SBT。

我的 Eclipse.ini 如下所示(Xmx 除外的默认设置):

-startup
../../../plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
../../../plugins/org.eclipse.equinox.launcher.cocoa.macosx.x86_64_1.1.200.v20120522-1813
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Dhelp.lucene.tokenizer=standard
-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts
-XX:MaxPermSize=256m
-Xms40m
-Xmx1060m
-Xdock:icon=../Resources/Eclipse.icns
-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts

相同的项目(即实际上是相同的项目,而不仅仅是相同的代码)在 Eclipse Indigo 中运行没有依赖性问题。编辑:刚刚发现,这个异常是由 JDK7 引起的,而不是使用的 Eclipse 版本。

4

2 回答 2

2

我正在使用支持 Juno 的预览版就好了:http ://scala-ide.org/download/milestone.html#scala_ide_21_milestone_3

于 2013-02-17T19:54:57.933 回答
1

与此同时,我设法解决了这些问题。

第一次尝试:

  • 更新到最新的 JDK(目前为 1.7.0u15)
  • 再次从 Github 克隆代码
  • 安装 Eclipse靛蓝
    • 重新安装 Eclipse 解决了 JDK6 的问题,现在它只是从 JDK7 开始,没有任何进一步的配置
  • 安装 Scala 插件
  • 使用创建一个新的 Eclipse 项目sbt eclipse
  • 导入创建的项目

糟糕,不起作用!我仍然得到这个例外:

value getPlatformMXBean is not a member of object java.lang.management.ManagementFactory

...这很奇怪,因为 Eclipse 现在真的可以使用 JDK7 运行。没有深入挖掘,我只是试了一下 Eclipse Juno。

第二次尝试:

  • 做和上面一样
  • 安装 Eclipse Juno而不是 Indigo
  • 是的,它有效!:)

结论:

所以我不知道为什么,但 Eclipse Indigo 不知何故不喜欢getPlatformMXBean. 这似乎不是 JDK 的问题,而是 Eclipse 本身的问题。

于 2013-02-23T10:21:01.937 回答