【问题标题】:Cannot run/debug Java applications in Eclipse (JavaTimeZone issue)无法在 Eclipse 中运行/调试 Java 应用程序(JavaTimeZone 问题)
【发布时间】:2010-12-05 22:00:57
【问题描述】:

我正在尝试在 MacBook 上开始使用 Eclipse/Java/Scala。安装的JDK是1.5。 Scala 的 SDT 插件需要 1.6,它包含在操作系统更新中,但我还手动安装了 Apple 的软件包来更新 1.6。 问题是我无法从 Eclipse 运行任何东西。我总是收到以下错误:

An internal error occurred during: "Launching TestFooBasicTest". Could not initialize class com.ibm.icu.impl.JavaTimeZone

我也尝试使用旧的 1.5 版本,但无济于事。

这里出了什么问题?

【问题讨论】:

标签: java eclipse macos


【解决方案1】:

我在尝试使用 Ubuntu 10.4 和 stock eclipse (Galileo 3.5.2) 和 java (java-6-openJdk) 运行 scala 程序时遇到了同样的问题 - 当然,还有从 scala 站点下载的 scala 插件。我按照此线程中的建议通过手动更改 /usr/lib/eclipse/plugins/com.ibm.icu_4.0.1.v20100125.jar 来修复它(顺便说一句,我发现 Emacs 可以更改 jar 文件:很好):

http://www.eclipse.org/forums/index.php?t=msg&goto=488654

这是由 ubuntu openjdk 软件包导致 TimeZone 配置的符号链接损坏。论坛帖子的最佳解决方案是,

重新安装 tzdata-java 对我来说是解决办法:

sudo apt-get --reinstall install tzdata-java

【讨论】:

  • bugs.debian.org/cgi-bin/bugreport.cgi?bug=600288 中找到更好的解决方案,将 -Dcom.ibm.icu.util.TimeZone.DefaultTimeZoneType=ICU 添加到 eclipse.ini
  • 重新安装 tzdata-java 工作!似乎最新的 Ubuntu 更新破坏了某些东西
  • 'sudo apt-get --reinstall install tzdata-java' 醒了!您可以编辑答案以使此重新安装技巧出现在您的答案中吗?
  • @iddo 将该属性添加到 eclipse.ini 并不能修复我在 eclipse 中失败的测试(我让 NPE 从返回日期的模拟对象中获取时区)。重新安装 tzdata-java 对我有用。 (测试在 Eclipse 之外也失败了)。
【解决方案2】:

问题是:

An internal error occurred during: "Launching TestFooBasicTest". Could not initialize class com.ibm.icu.impl.JavaTimeZone

快速的 google 搜索显示该类属于 IBM 全球化包 ICU。 http://www-01.ibm.com/software/globalization/icu/index.jsp

猜测是这是Scala内部使用的一个包,你没有正确安装,导致Scala启动失败。

【讨论】:

  • 即使没有安装 Scala,问题仍然存在。所以,我不认为这是原因。 :-(
  • 有趣。在这种情况下,请尝试创建一个 Hello World 程序。如果由于上述错误而失败,则创建一个新工作区并在其中创建一个 Hello World 程序。如果 THAT 也失败了(我认为它不会),那么我认为你需要一个新的 Eclipse 发行版。
  • ICU 被 Eclipse 使用,但 java.util.TimeZone.getAvailableIDs() 抛出异常。所以这是一个 Java 问题。
【解决方案3】:

确保在运行配置(运行/运行配置)中设置了 java 1.6。

【讨论】:

    【解决方案4】:

    你升级到雪豹了吗?您使用的是 Eclipse SWT/Carbon 还是 Eclipse SWT/Cocoa?升级到 SL 后,我发现 Eclipse 有点奇怪。从 Eclipse SWT/Carbon 切换到 Eclipse SWT/Cocoa 有帮助。还恢复了我的 1.5 VM,SL 安装以一种偷偷摸摸的方式删除了它(通过删除并保留指向 1.6 的符号链接),帮助我解决了具有本机的 Java 代码(即 USB 串行端口代码)的几个问题。

    【讨论】:

      【解决方案5】:

      检查 Eclipse 知道哪些 JVM 以及它们的位置(首选项 -> Java -> 已安装的 JRE),并检查程序的运行/调试配置。默认情况下,Eclipse 知道用于启动自身的 JRE,以及您手动添加的其他 JRE。但是,如果您升级了某些组件并且 JRE 发生了变化,Eclipse 可能会对它们感到“困惑”。

      【讨论】:

        【解决方案6】:

        我在 Windows 上使用 Eclipse 时遇到了同样的问题。我尝试了许多不同的东西,包括在新工作区中的新 hello world 程序。我终于通过将 Eclipse 指向要执行的不同 JRE 来实现这一点。我知道 Apple 为 Mac 提供了 JRE,但似乎这个问题与 Eclipse 与用于运行 Eclipse 本身的 JRE 有关。请参阅here 了解配置执行哪个 VM Eclipse。

        【讨论】:

          猜你喜欢
          • 2016-04-23
          • 2018-10-01
          • 2021-07-22
          • 1970-01-01
          • 2012-05-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多