【问题标题】:How do I use Java Swing in Eclipse on Mac OS X?如何在 Mac OS X 上的 Eclipse 中使用 Java Swing?
【发布时间】:2011-06-04 10:06:52
【问题描述】:

我是 Mac OS X 的新手,使用的是 10.6.5 版本。 JDK 1.6_u22 似乎已预装在系统上。我已经下载了 Eclipse 3.5.2。

如果我创建一个简单的 hello world 效果很好,但我无法导入 JFrame 或使用 Swing。我得到的错误信息是:

访问限制:由于所需库 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar 的限制,无法访问 JFrame 类型

这是我尝试过的简单程序:

import javax.swing.JFrame;

public class Test {

    public static void main(String[] args) {
        new JFrame();
    }
}

如何在 Mac OS X 上的 Eclipse 中使用 Java Swing?

【问题讨论】:

  • @David:我不明白这个问题对我有什么帮助。 JFrame 是 Java SE 中的标准类。
  • 您是否发布了整个Test 课程?你是用空包还是package javas.swing;
  • @mklhmnn:是的,这是整个程序。如果我使用package com.example,我会得到同样的错误。
  • 很遗憾,我无法帮助您使用 Eclipse,因为我使用的是真正的 Java-IDE:IntelliJ。 ;) 如果您尝试从命令行启动它会发生什么?

标签: java eclipse macos swing configuration


【解决方案1】:

在 Mac OS X 10.5.8、Eclipse 3.4.2 和 Xcode 3.1.4 上,以下示例使用 Java 1.5 或 Java 1.6 的最新版本构建和运行。由于 Xcode 包含 JDK,您使用的是什么版本的 Mac OS X 和 Xcode?​​p>

还要确认您的 Swing 项目没有无意中包含 SWT。

附录:检查这两个对话框:

Eclipse > Preferences > Java > Build Path
Eclipse > Preferences > Java > Installed JREs

您应该会看到对/System/Library/Frameworks/JavaVM.framework/ 的引用。

import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;

public class X {

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new JPanel() {

            private final int SIZE = 200;
            private final int INSET = 20;

            @Override
            public Dimension getPreferredSize() {
                return new Dimension(SIZE, SIZE);
            }

            @Override
            public void paintComponent(Graphics g) {
                super.paintComponent(g);
                Graphics2D g2 = (Graphics2D) g;

                g2.setColor(Color.blue);
                Line2D line1 = new Line2D.Double(INSET, INSET,
                    getWidth() - INSET, getHeight() - INSET);
                Line2D line2 = new Line2D.Double(getWidth() - INSET,
                    INSET, INSET, getHeight() - INSET);
                g2.setStroke(new BasicStroke(16,
                    BasicStroke.CAP_ROUND,
                    BasicStroke.JOIN_BEVEL));
                g2.draw(line1);
                g2.draw(line2);
            }
        });
        frame.pack();
        frame.setVisible(true);
    }
}

【讨论】:

  • 我使用的是 Xcode 3.2.5。电脑是全新的,我已经更新了所有软件。
  • Eclipse > Preferences > Java > Installed JREs 下选择了JVM 1.4,我选择了JVM 1.6.0 并创建了一个新项目。现在它工作了吗。谢谢。
【解决方案2】:

我最好的猜测是,您包含了 Eclipse 中的 JDK 1.6 运行时 JAR 文件,但 Eclipse 正在尝试与 JDK 1.5 一起运行。

Eclipse 使用依赖于 32 位二进制文​​件的 SWT。 Mac OSX 上唯一的 32 位 JVM 是 1.5,这意味着 Eclipse 必须使用 JDK 1.5 运行。您将项目设置为使用 1.5 运行并尝试使用 1.6 的 classes.jar 是合理的

换句话说,验证 Eclipse 正在使用正确的 JVM 启动您的应用程序。

【讨论】:

    猜你喜欢
    • 2010-11-06
    • 1970-01-01
    • 2014-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    • 1970-01-01
    • 2012-01-24
    相关资源
    最近更新 更多