Я пытаюсь написать код Java, который будет кодировать код, который получит виджет Cocoa IKPictureTaker для загрузки с использованием Rococoa. Я чувствую, что сейчас становлюсь ближе, но у меня возникает ошибка, и я не совсем понимаю, почему это происходит. Ошибка, я получаю это:Проблема расшифровки класса java не видно из ошибки загрузчика класса
Exception in thread "main" java.lang.ExceptionInInitializerError
at IKPictureTakerTest.main(IKPictureTakerTest.java:39)
Caused by: java.lang.IllegalArgumentException: interface IKPictureTaker$_Class is not visible from class loader
at java.lang.reflect.Proxy.getProxyClass(Proxy.java:353)
at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:581)
at org.rococoa.Rococoa.createProxy(Rococoa.java:164)
at org.rococoa.Rococoa.wrap(Rococoa.java:118)
at org.rococoa.Rococoa.createClass(Rococoa.java:50)
at IKPictureTaker.<clinit>(IKPictureTaker.java:31)
Таким образом, есть два небольших классов, которые взаимодействуют здесь первый класс IKPictureTaker:
public interface IKPictureTaker extends NSObject
{
public static final _Class MYCLASS = Rococoa.createClass("IKPictureTaker", _Class.class);
public interface _Class extends NSClass
{
/**
* Returns a shared {@code IKPictureTaker} instance, creating it if necessary.
* @return an {@code IKPictureTaker} object.
*/
IKPictureTaker pictureTaker();
}
NSInteger runModal();
}
А класс тест:
public class IKPictureTakerTest extends JFrame
{
public static void main(String[] args) throws Exception
{
// You need a GUI before this will work.
new IKPictureTakerTest().setVisible(true);
NSAutoreleasePool pool = NSAutoreleasePool.new_();
QTKit instance = QTKit.instance;
// Initialize the Quartz framework.
Quartz.instance.toString();
// Display the dialog.
IKPictureTaker pictureTaker = IKPictureTaker.MYCLASS.pictureTaker();
NSInteger result = pictureTaker.runModal();
if (result.intValue() == 0) // NSCancelButton
{
System.out.println("User cancelled.");
}
else
{
assert result.intValue() == 1; // NSOKButton
System.out.println("User chose an image.");
}
pool.release();
}
}
Это первый раз, когда я сделал компиляцию в командной строке в java, поэтому я думаю, что, возможно, ошибка компоновщика исходит из этого, но я не уверен. Может ли кто-нибудь дать мне подсказку о том, что может происходить здесь?
P.S. Возможно, важно отметить, что приложение Cocoa всплывает с пустым окном до возникновения этой ошибки, но нет содержимого.
Вы уверены, что вы собрали все файлы, прежде чем пытаться запустить код? –
yes Я сделал javac * .java и все файлы находятся в том же каталоге. – Mike2012
Каталог содержит: IKPictureTaker $ _Class.class \t QTKit.class IKPictureTaker.class \t \t QTKit.java IKPictureTaker.java \t \t Quartz.class IKPictureTakerTest.class \t Quartz.java IKPictureTakerTest.java QTKit и кварцевые маленькие однострочные классы. Я думаю, что класс, о котором идет речь в ошибке, является вложенным интерфейсом: public interface _Class extends NSClass – Mike2012