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

时间:2011-01-06 02:43:09

标签: java eclipse macos swing configuration

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

如果我创建一个简单的hello世界,它可以正常工作,但我无法导入JFrame或使用Swing。我得到的错误消息是:

  

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

以下是我尝试过的简单程序:

import javax.swing.JFrame;

public class Test {

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

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

2 个答案:

答案 0 :(得分:3)

在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?

同时验证您的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);
    }
}

答案 1 :(得分:0)

我最好的猜测是你从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启动应用程序。