Android 扩展类时ClassNotFoundException
我正在使用TypeScript开发一个NativeScript条带插件。它正在iOS上运行,现在正试图让它在Android上运行 我已经成功地扩展了一些Android类(如下)。然而,其中一个在构造ClassNotFoundException时给出了ClassNotFoundException 我使用android dts生成器创建了一个.d.ts文件。它给出了我扩展的类的签名(缩写): 我的发言如下:Android 扩展类时ClassNotFoundException,android,nativescript,Android,Nativescript,我正在使用TypeScript开发一个NativeScript条带插件。它正在iOS上运行,现在正试图让它在Android上运行 我已经成功地扩展了一些Android类(如下)。然而,其中一个在构造ClassNotFoundException时给出了ClassNotFoundException 我使用android dts生成器创建了一个.d.ts文件。它给出了我扩展的类的签名(缩写): 我的发言如下: class InternalPaymentListener extends com.stri
class InternalPaymentListener extends com.stripe.android.PaymentSession.PaymentSessionListener {
constructor() {
super();
return global.__native(this);
}
init(p1, p2): InternalPaymentListener { ...; return this; }
...
}
当我尝试构造它时,使用newinternalpaymentlistener().init(p1,p2)
我得到一个ClassNotFoundException:
JS: ERROR Error: java.lang.ClassNotFoundException: com.tns.gen.com.stripe.android.PaymentSession_PaymentSessionListener_stripe_148_28_InternalPaymentListener
JS: java.lang.Class.classForName(Native Method)
JS: java.lang.Class.forName(Class.java:453)
JS: java.lang.Class.forName(Class.java:378)
JS: com.tns.Runtime.getClassForName(Runtime.java:1023)
JS: com.tns.ClassResolver.resolveClass(ClassResolver.java:27)
JS: com.tns.Runtime.resolveClass(Runtime.java:593)
JS: com.tns.Runtime.callJSMethodNative(Native Method)
JS: com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1101)
JS: com.tns.Runtime.callJSMethodImpl(Runtime.java:983)
JS: com.tns.Runtime.callJSMethod(Runtime.java:970)
JS: com.tns.Runtime.callJSMethod(Runtime.java:954)
JS: com.tns.Runtime.callJSMethod(Runtime.java:946)
JS: com.tns.gen.java.lang.Object_button_19_32_ClickListenerImpl.onClick(Object_button_19_32_ClickListenerImpl.java:17)
JS: android.view.View.performClick(View.java:6294)
JS: android.view.View$PerformClick.run(View.java:24770)
JS: android....
生成的stripe.js文件位于第148行(我假设是异常指向的):
函数InternalPaymentListener(){
var _this=_super.call(this)| | this;看起来我找到了我自己问题的答案,所以很快我一开始就几乎不好意思问了
事实证明,PaymentSessionListener
是一个接口,而不是一个类。我被android dts generator生成的.d.ts定义搞糊涂了。这就是如何正确实现接口(如中所述):
JS: ERROR Error: java.lang.ClassNotFoundException: com.tns.gen.com.stripe.android.PaymentSession_PaymentSessionListener_stripe_148_28_InternalPaymentListener
JS: java.lang.Class.classForName(Native Method)
JS: java.lang.Class.forName(Class.java:453)
JS: java.lang.Class.forName(Class.java:378)
JS: com.tns.Runtime.getClassForName(Runtime.java:1023)
JS: com.tns.ClassResolver.resolveClass(ClassResolver.java:27)
JS: com.tns.Runtime.resolveClass(Runtime.java:593)
JS: com.tns.Runtime.callJSMethodNative(Native Method)
JS: com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1101)
JS: com.tns.Runtime.callJSMethodImpl(Runtime.java:983)
JS: com.tns.Runtime.callJSMethod(Runtime.java:970)
JS: com.tns.Runtime.callJSMethod(Runtime.java:954)
JS: com.tns.Runtime.callJSMethod(Runtime.java:946)
JS: com.tns.gen.java.lang.Object_button_19_32_ClickListenerImpl.onClick(Object_button_19_32_ClickListenerImpl.java:17)
JS: android.view.View.performClick(View.java:6294)
JS: android.view.View$PerformClick.run(View.java:24770)
JS: android....
function InternalPaymentListener() {
var _this = _super.call(this) || this; <-- Line 148
return global.__native(_this);
}
function createListener() {
return new com.stripe.android.PaymentSession.PaymentSessionListener({
onError(param0: number, param1: string): void { ... }
...
});
}