Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference #26

Closed
songhaipeng opened this issue Mar 30, 2016 · 23 comments

Comments

@songhaipeng
Copy link

Android进行真机测试的时候提示这个信息,具体调试堆栈信息如下,麻烦帮忙看看。多谢~~

W/System.err( 2368): java.lang.NullPointerException: Attempt to get length of null array
W/System.err( 2368): at java.security.spec.EncodedKeySpec.(EncodedKeySpec.java:37)
W/System.err( 2368): at java.security.spec.PKCS8EncodedKeySpec.(PKCS8EncodedKeySpec.java:35)
W/System.err( 2368): at wang.imchao.plugin.alipay.SignUtils.sign(SignUtils.java:17)
W/System.err( 2368): at wang.imchao.plugin.alipay.AliPayPlugin.sign(AliPayPlugin.java:154)
W/System.err( 2368): at wang.imchao.plugin.alipay.AliPayPlugin.pay(AliPayPlugin.java:59)
W/System.err( 2368): at wang.imchao.plugin.alipay.AliPayPlugin.execute(AliPayPlugin.java:45)
W/System.err( 2368): at org.apache.cordova.CordovaPlugin.execute(CordovaPlugin.java:98)
W/System.err( 2368): at org.apache.cordova.PluginManager.exec(PluginManager.java:133)
W/System.err( 2368): at org.apache.cordova.CordovaBridge.jsExec(CordovaBridge.java:59)
W/System.err( 2368): at org.apache.cordova.engine.SystemExposedJsApi.exec(SystemExposedJsApi.java:41)
W/System.err( 2368): at org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
W/System.err( 2368): at org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:53)
W/System.err( 2368): at android.os.Handler.dispatchMessage(Handler.java:102)
W/System.err( 2368): at android.os.Looper.loop(Looper.java:145)
W/System.err( 2368): at android.os.HandlerThread.run(HandlerThread.java:61)
E/PluginManager( 2368): Uncaught exception from plugin
E/PluginManager( 2368): java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
E/PluginManager( 2368): at libcore.net.UriCodec.encode(UriCodec.java:132)
E/PluginManager( 2368): at java.net.URLEncoder.encode(URLEncoder.java:57)
E/PluginManager( 2368): at wang.imchao.plugin.alipay.AliPayPlugin.pay(AliPayPlugin.java:62)
E/PluginManager( 2368): at wang.imchao.plugin.alipay.AliPayPlugin.execute(AliPayPlugin.java:45)
E/PluginManager( 2368): at org.apache.cordova.CordovaPlugin.execute(CordovaPlugin.java:98)
E/PluginManager( 2368): at org.apache.cordova.PluginManager.exec(PluginManager.java:133)
E/PluginManager( 2368): at org.apache.cordova.CordovaBridge.jsExec(CordovaBridge.java:59)
E/PluginManager( 2368): at org.apache.cordova.engine.SystemExposedJsApi.exec(SystemExposedJsApi.java:41)
E/PluginManager( 2368): at org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
E/PluginManager( 2368): at org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:53)
E/PluginManager( 2368): at android.os.Handler.dispatchMessage(Handler.java:102)
E/PluginManager( 2368): at android.os.Looper.loop(Looper.java:145)
E/PluginManager( 2368): at android.os.HandlerThread.run(HandlerThread.java:61)

@charleyw
Copy link
Owner

应该是key没有配置对。重新安装一下试试看,注意key的格式。
https://github.com/charleyw/cordova-plugin-alipay#自动安装cordova--v511

@songhaipeng
Copy link
Author

重新了很多次,依然还是不行。应该不是Key的问题,我下载支付宝的SDKDemo,将生成的Key加入之后运行没有问题。

@charleyw
Copy link
Owner

我在开android studio,一会打开看看调用栈。

在跟你确认一遍,安装的命令是这样的:

cordova plugin add https://github.com/charleyw/cordova-plugin-alipay.git --variable PARTNER_ID=201118888070884 --variable SELLER_ACCOUNT=youxiang@youxiang.com --variable PRIVATE_KEY=MIasdfasdfEFAASCAmAwggJcAgEAAoGBAJ2yLuasfadsfasdfasdfasdf1lzZzBgrvkl9kqhJSFAACQ/A/Bs0aasdfductbgOLzJkHu5mYUbIi6ACHfq+JzGTFlGW2FPLAgMBAAECgYEAigIlqp9L6fuQU8n2aJf5h5OABWH7kdEj35KZSPX7GoGV4akaELjiHDxmLuV+KoojzKS5WnfAzO72/Masdfasdf5AsDkYpYnEYqaPWeFJI8VffYgarzDA1t/nSdRKfwNgrdH1R+IZWDCdyUtmfAkEAwdiDKSGaTAwCZY8XHIzjNu1+tvQYweqHw0UIIr1cVW2uwGj7dQF+6ulPpPcnyY5r4/asdfasdfa+Ek/1y0ODupP1divNfyeTNCTsK+TfHWdWPDk0Lz9/rbKtdI6p2dAfez8xBlV3wJAH7FhiGkJDCPuhGJHuhBC2eksjYcNQS8yMTfpI5zoKsN7DdRcQH4VHR02O1d5dtfFRgo+20la3fEgK+PuoLasdfadsf5G2Bknth+OLCKLJS3nasdfasdfh5Iytv8dXT800dOrKO6slhBGO4TMvs+88mvgasdfasdfMdQ0tQl7A==

@songhaipeng
Copy link
Author

是的。我用你给的这套Key也是提示这个信息。真是不好意思,麻烦你了。

@charleyw
Copy link
Owner

我看了一下源码,确实是 private key没找到。但是我不太清楚在你的环境上为什么没找到。

你的cordova版本是多少?

@charleyw
Copy link
Owner

你可以试一下 按照 这个 步骤 手动 安装。
https://github.com/charleyw/cordova-plugin-alipay#手动安装

@songhaipeng
Copy link
Author

使用的Cordova版本是6.0,我直接修改源代码,将private key固定写在sign方法上也是不行。手动安装我也尝试了,错误提示一样的。

@charleyw
Copy link
Owner

你的key的格式是PKCS的吗?

@charleyw
Copy link
Owner

好的,我装一下看看

@charleyw
Copy link
Owner

我这边是可以的,刚才还付了0.02元,我把 我用的安装命令发到你邮箱了 songhaipeng@gmail.com
你再试试看。

PS: 我把你发的key的内容删掉了。

@songhaipeng
Copy link
Author

好的。非常感谢~~

@songhaipeng
Copy link
Author

我先将插件下载到本地,然后将三个参数写在java文件中就可以了,但是如果是引入插件的时候作为变量传入就找不到了。不知道问题出现在什么地方。

@charleyw
Copy link
Owner

你是windows 还是mac?

@songhaipeng
Copy link
Author

是Windows 10 64位,我在尝试修改获取参数方法,看看是否可以。

@charleyw
Copy link
Owner

好的,我没测试过在windows上用。估计可能是命令行的某些限制把。
你加油 👍

@songhaipeng
Copy link
Author

找到原因了。但是不明白为什么,如果将plugin里面的name="private_key"修改为name="privatekey",删除那个下划线就可以找到了。

@songhaipeng
Copy link
Author

@charleyw 安卓调试通了之后,苹果版本一路畅通。多谢你的耐心帮助^_^

@charleyw
Copy link
Owner

没关系,这本身也是帮我完善这个插件。

不过这个原因真是很匪夷所思。之后我把那个下划线删了。
能提供一下你的android的操作系统的版本么?我完了看能不能找到机器重现一下。

@songhaipeng
Copy link
Author

我测是使用的手机是三星S5,型号G9008W,安卓版本5.0。我也是在源文件里面增加了一些日志,逐个跟踪才发现这个问题。然后我看了一下其他人写的插件,发现他们都没有用下划线,我就尝试修改一下就可以了。

@charleyw
Copy link
Owner

好的,谢谢了。我改一下。:)

@songhaipeng
Copy link
Author

另外那个plugin.xml头文件中声明android命名空间的问题也修改一下吧。这样在VisualStudio中可以直接导入了。例如https://github.com/vilic/cordova-plugin-wechat.git的plugin.xml文件。

charleyw added a commit that referenced this issue Mar 31, 2016
@charleyw
Copy link
Owner

谢啦,我都改好了。

@songhaipeng
Copy link
Author

OK,刚刚接触Cordova,以前都是用Xamarin开发,以后还请多多指教啊

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants