Я пытаюсь создать подкласс внутреннего класса (определенного в Java) в Rhino, и я не могу заставить его работать.
У меня есть некоторый скомпилированный код Java (который я, по сути, могуэто не так), который имеет внутренний абстрактный класс:
package mypackage;
class MyClass {
abstract static class MyInnerClass {
abstract void print(String s);
}
}
Из Rhino, я вижу это прекрасно:
js> Packages.mypackage.MyClass.MyInnerClass
[JavaClass mypackage.MyClass$MyInnerClass]
Но я не могу понять, как его подкласс,Я подумал, что что-то вроде этого будет работать, так как я делаю это для не внутренних классов:
var a = new JavaAdapter(Packages.mypackage.MyClass.MyInnerClass, {
print: function(s) { print("s=" + s); },
});
Мало того, что это не работает, сам Rhino завершает работу, и дает мне вполне след стека:
Exception in thread "main" java.lang.IllegalAccessError: class adapter1 cannot access its superclass mypackage.MyClass$MyInnerClass
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:676)
at org.mozilla.javascript.DefiningClassLoader.defineClass(DefiningClassLoader.java:62)
...
Я делаю это неправильно?Есть идеи?
РЕДАКТИРОВАТЬ: О, я только что понял, что MyClass не объявлен "публичным".Может ли это быть?