使用反射调用私有本机方法

时间:2012-05-17 23:42:27

标签: java android java-native-interface native

我在我的应用中有这段代码(我正在调用private native 方法)

 Method m;
 try {
     m = Time.class.getDeclaredMethod("format1", String.class);
     m.setAccessible(true);
     return (String) m.invoke((Time) this, format);

 } catch (NoSuchMethodException e) {
     e.printStackTrace();
 } catch (IllegalArgumentException e) {
     e.printStackTrace();
 } catch (IllegalAccessException e) {
     e.printStackTrace();
 } catch (InvocationTargetException e) {
     e.printStackTrace();
 }

Timeandroid.text.format.time类,我在扩展Time的类中运行此代码。

问题是,我的应用程序内部没有任何错误,然后我的应用程序突然关闭。 (没有强行关闭)

在logcat中,我有这些:

A/libc(9193): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1)
I/DEBUG(15804): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG(15804): Build fingerprint: 'google/soju/crespo:4.0.4/IMM76D/299849:user/release-keys'
I/DEBUG(15804): pid: 9193, tid: 9193  >>> com.myapp <<<
I/DEBUG(15804): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000
I/DEBUG(15804):  r0 00000000  r1 bed564a0  r2 bed565a1  r3 00000000
I/DEBUG(15804):  r4 4008a55c  r5 00000000  r6 bed565cc  r7 016b58b9
I/DEBUG(15804):  r8 bed565a1  r9 4020b9a4  10 bed5647c  fp bed5663c
I/DEBUG(15804):  ip ffffff1c  sp bed5639c  lr 4006c58d  pc 4006c14c  cpsr 20000030
...

有关如何修复它的想法吗?

0 个答案:

没有答案