0

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

以下是注释中的代码和问题:

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 Runtime Environment (build 1.7.0_07-b10) Java HotSpot(TM) Server VM (build 23.3-b01, 混合模式)

苹果系统:

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

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

4

2 回答 2

2

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

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

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

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

于 2012-09-24T18:50:53.477 回答
1

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

于 2012-09-24T18:43:42.003 回答