首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从类加载器错误中解密不可见的java类时出现问题

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

Stack Overflow用户
提问于 2009-11-06 04:45:21
回答 1查看 1.2K关注 0票数 0

我正在尝试写一些java代码,将代码的可可IKPictureTaker窗口小部件加载使用Cocoa。我觉得我现在越来越接近了,但我收到了一个错误,我不太确定为什么会发生这种情况。我得到的错误是:

代码语言:javascript
复制
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类:

代码语言:javascript
复制
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();
}

以及测试类:

代码语言:javascript
复制
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应用程序确实会弹出一个空窗口,但没有内容。

EN

回答 1

Stack Overflow用户

发布于 2009-11-07 05:18:13

不确定您的单行类有什么(这就是加载的库),但我认为这就是您的问题所在。我通过确保Quartz被加载来让它工作:

代码语言:javascript
复制
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();

   //...

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1683464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档