【问题标题】:Java, Mac OS, Windows and LinuxJava、Mac OS、Windows 和 Linux
【发布时间】:2012-09-16 06:11:36
【问题描述】:

我已从 Linux (Ubuntu) 迁移到 Mac OS。我用 Java (swing) 编写了一个应用程序。我已经在 windows 和 linux 中成功运行了相同的代码,但是在 mac os 中我遇到了一些问题。

这里是cmets中的代码和问题:

public MainForm() {
    setResizable(false);
    setAutoRequestFocus(false); // This method is undefined for type MainForm
    initComponents();
}

另一个:

Object[] industries = jList1.getSelectedValuesList().toArray(); //  This method is undefined...

最后一个:

setType(Type.UTILITY); // Type can't be resolved as variable

当然不能编译。

Java 版本: Ubuntu:

java版本“1.7.0_07” Java(TM) SE 运行时环境 (build 1.7.0_07-b10) Java HotSpot(TM) 服务器虚拟机(build 23.3-b01,混合模式)

MacOS:

java 版本“1.6.0_35” Java(TM) SE 运行时环境 (build 1.6.0_35-b10-428-11M3811) Java HotSpot(TM) 64 位服务器 VM(内部版本 20.10-b01-428,混合模式)

我无法更新 java(因为它似乎是 mac 的最新版本)。我现在想在mac上开发这个应用。

【问题讨论】:

  • 你不需要为每个操作系统重新编译它,因为Java是可移植的;一个 JAR 文件可以类似地在 Windows、Linux、Mac 或任何可以运行 JVM 的操作系统上执行。
  • @Vulcan 是对的,您应该能够将 jar 从 Windows 复制到 Mac 并在那里运行。但是,如果您的 Mac 的 Java 版本比您在其他平台上用于代码的 Java 版本旧,您可能不会这样做。在 Mac 上运行 java -version 并编辑您的问题以显示输出。
  • 其实你可以在Mac上安装Java 7。 Apple 不再分发它,而是为 Oracl 提供外观库。转到Downloads,第 5 个选项(在 Linux 发行版下)你会找到 Mac 版本

标签: java windows linux macos


【解决方案1】:

在对给您带来问题的方法进行了一些挖掘之后,很明显您并没有在每个平台上运行相同的 JDK。具体来说,您的 Windows 和 Linux 机器正在运行 JDK 1.7,而您的 Mac OS X 机器正在运行 JDK 1.6 或更早版本。有关在 Mac 上使用 JDK 1.7 的信息,请参阅 this question

事实上,您不需要在每个平台上编译您的应用程序。 Java 是一种“编译一次,到处运行”的语言。编译器生成的字节码适用于每个平台,不管是哪个平台编译的,只要你自己没有在代码中引入任何系统依赖即可。

换句话说,只要您的代码与平台无关,Java 本身就是与平台无关的。您的问题只是 JDK 版本错误,因此将 Mac 的 JDK 版本升级到 1.7 即可解决此问题。

请注意,您无法在 Java 6 或更低版本中运行使用 1.7 源目标编译的二进制文件。您可以在编译时将源目标更改为 1.6,但这会阻止您使用 Java 7 API(例如 getSelectedValuesList 方法)。

【讨论】:

  • 即使程序是在 Windows 或 Linux 上编译的,它是在 Java 7 下编译的事实将阻止它在 Java 6 下运行。我知道你可以将二进制文件定位到与 Java 6 兼容,但是如果您使用 Java 7 的 API,它仍然无法运行。我弄错了吗?更好的解决方案是将 Mac 上的 JDK 升级到 Java 7
  • @MadProgrammer 这不是我说的吗?我会澄清我的答案,以便更清楚。
  • @Brain - 错过了最后一段,抱歉。
  • @MadProgrammer 哦,不,你没有错,我在你发表评论后将最后一段添加到我的答案中。你很安全:3
  • 非常感谢我已经安装了 OpenJDK 1.7 并在 eclipse new java 中设置,现在可以使用了。谢谢。
【解决方案2】:

Linux上创建executable jar,并在Mac上执行。它应该运作良好。
如果您想在另一个操作系统上开发您的应用程序,请检查 JDK 是否具有相同的版本。
完整版应该是平等的。 1.6_31也应该等于

【讨论】:

    猜你喜欢
    • 2017-06-02
    • 2017-07-30
    • 2011-09-08
    • 2015-09-23
    • 2021-07-01
    • 2016-04-11
    • 2010-10-09
    • 1970-01-01
    • 2013-03-08
    相关资源
    最近更新 更多