gpt4 book ai didi

java - 无法从类加载器错误中解密 java 类

转载 作者:行者123 更新时间:2023-12-01 16:09:49 26 4
gpt4 key购买 nike

我正在尝试编写一些java代码,这些代码将编码将使用Rococoa加载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)

所以这里有两个正在交互的小类,首先是 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 中完成任何命令行编译,所以我认为可能是链接器错误造成的,但我不确定。有人能给我提示一下这里可能发生什么吗?

附注值得注意的是,在发生此错误之前,Cocoa 应用程序确实会弹出一个空窗口,但没有任何内容。

最佳答案

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

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();

//...

}

关于java - 无法从类加载器错误中解密 java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1683464/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com