我正在使用TypeScript开发NativeScript Stripe插件。它正在iOS上运行,现在正尝试使其在Android上运行。
我已经能够成功扩展一些Android类(在Extending Classes之后)。但是,在构造类时会给出ClassNotFoundException。
我使用android-dts-generator创建了一个.d.ts文件。它给出了我要扩展的类的签名(缩写):
declare module com {
export module stripe {
export module android {
export class PaymentSession {
export class PaymentSessionListener {
public constructor();
public onError(param0: number, param1: string): void;
...
}}}}}
我扩展如下:
class InternalPaymentListener extends com.stripe.android.PaymentSession.PaymentSessionListener {
constructor() {
super();
return global.__native(this);
}
init(p1, p2): InternalPaymentListener { ...; return this; }
...
}
当我尝试使用new InternalPaymentListener().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行(我认为这是异常将我指向的内容):
function InternalPaymentListener() {
var _this = _super.call(this) || this; <-- Line 148
return global.__native(_this);
}
代码编译时没有错误或警告,因此您认为该类已正确生成。它一直运行到我单击导致构造该类的按钮为止。
有什么办法解决这个问题吗?
答案 0 :(得分:1)