I am trying to write some java code that will code the will get the Cocoa IKPictureTaker widget to load using Rococoa. I feel like I am getting closer now but I am getting an error and I am not quite sure why it is occurring. The error that I am getting is this:
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)
So there are two small classes that are interacting here first is the IKPictureTaker class:
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();
}
And the test class:
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();
}
}
This is the first time that I have done any command line compilation in java so I think that maybe by linker error is coming from that but I am not sure. Could anyone give me a hint as to what might be going on here?
P.S. It might be important to note that the Cocoa application does pop up with an empty window before this error occurs but there is not contents.