Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.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
Android 扩展类时ClassNotFoundException_Android_Nativescript - Fatal编程技术网

Android 扩展类时ClassNotFoundException

Android 扩展类时ClassNotFoundException,android,nativescript,Android,Nativescript,我正在使用TypeScript开发一个NativeScript条带插件。它正在iOS上运行,现在正试图让它在Android上运行 我已经成功地扩展了一些Android类(如下)。然而,其中一个在构造ClassNotFoundException时给出了ClassNotFoundException 我使用android dts生成器创建了一个.d.ts文件。它给出了我扩展的类的签名(缩写): 我的发言如下: class InternalPaymentListener extends com.stri

我正在使用TypeScript开发一个NativeScript条带插件。它正在iOS上运行,现在正试图让它在Android上运行

我已经成功地扩展了一些Android类(如下)。然而,其中一个在构造ClassNotFoundException时给出了ClassNotFoundException

我使用android dts生成器创建了一个.d.ts文件。它给出了我扩展的类的签名(缩写):

我的发言如下:

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 { ... }
    ...
  });
}