Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从类加载器错误中解密不可见的java类时出现问题_Java_Ikpicturetaker_Rococoa - Fatal编程技术网

从类加载器错误中解密不可见的java类时出现问题

从类加载器错误中解密不可见的java类时出现问题,java,ikpicturetaker,rococoa,Java,Ikpicturetaker,Rococoa,我正在尝试编写一些java代码,这些代码将使用Lococoa加载Cocoa IKPictureTaker小部件。我觉得我现在越来越近了,但我有一个错误,我不太清楚为什么会发生。我得到的错误是: Exception in thread "main" java.lang.ExceptionInInitializerError at IKPictureTakerTest.main(IKPictureTakerTest.java:39) Caused by: java.lang.IllegalArgum

我正在尝试编写一些java代码,这些代码将使用Lococoa加载Cocoa IKPictureTaker小部件。我觉得我现在越来越近了,但我有一个错误,我不太清楚为什么会发生。我得到的错误是:

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)
和测试类:

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进行任何命令行编译,所以我认为可能是由于链接器错误,但我不确定。谁能给我一个提示,这里可能发生了什么事


另外,可能需要注意的是,在出现此错误之前,Cocoa应用程序确实会弹出一个空窗口,但没有内容

不确定您的单行类有什么(即正在加载的libs),但我认为这就是您的问题所在。我通过确保石英被加载来实现它:

public interface IKPictureTaker extends NSObject {

    Library quartzINSTANCE = (Library) Native.loadLibrary("Quartz", Library.class);
    //...

}

public class IKPictureTakerTest extends JFrame {

   //...

   //QTKit instance = QTKit.instance;

   //Quartz.instance.toString();

   //...

}

您确定在尝试运行代码之前编译了所有文件吗?是的,我编写了一个javac*.java,所有文件都在同一个目录中。该目录包含:IKPictureTaker$\u Class.Class QTKit.Class IKPictureTaker.Class QTKit.java IKPictureTaker.java Quartz.Class IKPictureTakerTest.Class Quartz.java IKPictureTakerTest.java QTKit和Quartz是一个小的单行类。我认为错误中有问题的类是嵌套接口:public interface\u class扩展了nsclass。我添加了这些更改并遇到了同样的问题,您是如何编译它的?我正在运行javac*.java,然后是java-Djna.library.path=/library/java/Extensions/bin-IKPictureTakerTest。这可能就是区别吗?你能顺便把你的版本发给迈克吗_minerva@yahoo.com?
public interface IKPictureTaker extends NSObject {

    Library quartzINSTANCE = (Library) Native.loadLibrary("Quartz", Library.class);
    //...

}

public class IKPictureTakerTest extends JFrame {

   //...

   //QTKit instance = QTKit.instance;

   //Quartz.instance.toString();

   //...

}