我是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?
答案 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? 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);
}
}
答案 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启动应用程序。