2011-01-06 2 views
2

Я новичок в Mac OS X и использую версию 10.6.5. Предполагается, что в системе предустановлен JDK 1.6_u22. Я загрузил Eclipse 3.5.2.Как использовать Java Swing в Eclipse в Mac OS X?

Он отлично работает, если я создаю простой мир привет, но я не могу импортировать JFrame или использовать Swing. Сообщение об ошибке, что я получаю: ограничение

доступа: Тип JFrame не доступен из-за ограничений на необходимые библиотеки /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes. баночка

Вот простая программа, я попытался с:

import javax.swing.JFrame; 

public class Test { 

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

Как использовать Java Swing в Eclipse, на Mac OS X?

+0

Как и http://stackoverflow.com/questions/860187/access-restriction-on-class-due-to-restriction-on-required-library-rt-jar –

+0

@David: Я не понимаю, как этот вопрос помог мне. 'JFrame' является стандартным классом в Java SE. – Jonas

+0

Вы опубликовали весь класс 'Test'? Вы используете пустой пакет или, может быть, 'package javas.swing;'? – Mot

ответ

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); 
    } 
} 
+0

Я обновил свой вопрос с дополнительной информацией. – Jonas

+0

Я вижу, вы используете 10.6.5; что Xcode? Еще выше. – trashgod

+0

Я использую Xcode 3.2.5. Компьютер совершенно новый, и я обновил все программное обеспечение. – Jonas

0

Мое предположение, что вы включили выполнения JAR-файлы из Eclipse, для JDK 1.6, но Eclipse, пытается работать с JDK 1.5.

Eclipse использует SWT, который опирается на 32-битные двоичные файлы. Единственная 32-разрядная JVM на Mac OSX равна 1,5, что означает, что Eclipse должен работать с использованием JDK 1.5. Вероятно, вы настроили свой проект на 1,5 и пытаетесь использовать 1.6 classes.jar

Другими словами, Eclipse запускает ваше приложение с помощью правильной JVM.