求助:sub B4XPage_Created signature does not match expected signature

大家好,
我在一个b4xpage项目A中实现了一个custom view class, 然后将项目编译为只适用于b4a平台的库(通过IDE的“alt+5"命令)。
然后我在另一个工程中B中想测试自定义的库是否能正常工作。
但是我一运行工程B就闪退。
调试器的输出提示 “sub B4XPage_Created signature does not match expected signature”。(见完整报错信息第30、34行)

以下是完整的信息:
报错信息:
*** Service (starter) Create ***
** Service (starter) Start **
** Activity (main) Create (first time) **
Error occurred on line: 359 (B4XPagesManager)
java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.keywords.Common.CallSubDebug2(Common.java:1087)
    at b4a.example.b4xpagesmanager._createpageifneeded(b4xpagesmanager.java:1068)
    at b4a.example.b4xpagesmanager._showpage(b4xpagesmanager.java:425)
    at b4a.example.b4xpagesmanager._addpage(b4xpagesmanager.java:245)
    at b4a.example.b4xpagesmanager._addpageandcreate(b4xpagesmanager.java:259)
    at b4a.example.b4xpagesmanager._initialize(b4xpagesmanager.java:165)
    at b4a.example.main._activity_create(main.java:415)
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:732)
    at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:351)
    at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255)
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:157)
    at b4a.example.main.afterFirstLayout(main.java:105)
    at b4a.example.main.access$000(main.java:17)
    at b4a.example.main$WaitForLayout.run(main.java:83)
    at android.os.Handler.handleCallback(Handler.java:955)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:228)
    at android.app.ActivityThread.main(ActivityThread.java:9105)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:614)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1129)
Caused by: java.lang.RuntimeException: java.lang.Exception: Sub B4XPage_Created signature does not match expected signature.
    at anywheresoftware.b4a.debug.Debug.CallSub4(Debug.java:336)
    at anywheresoftware.b4a.debug.Debug.CallSubNew2(Debug.java:285)
    ... 24 more
Caused by: java.lang.Exception: Sub B4XPage_Created signature does not match expected signature.
    at anywheresoftware.b4a.debug.Debug.CallSub4(Debug.java:321)
    ... 25 more
** Activity (main) Resume **

我反复检查过两个工程文件中的sub B4XPage_Created的函数名称,我确信是一摸一样的。工程A能正常运行,但是工程B始终报错。
已经被这个问题困扰1周了,实在是没有头绪了。求助各位帮忙测试一下,看看是什么原因。
附件是我的库文件源码,和编译好的库文件。
提前谢谢各位!
 

Attachments

  • FirstLib.zip
    12.6 KB · Views: 101
  • FirstLib.jar
    37.1 KB · Views: 90
  • FirstLib.xml
    9 KB · Views: 103

teddybear

Well-Known Member
Licensed User
IDE的“alt+5"命令并不能完全生成jar的包装库,你可以把这个定制视图类打包成b4xlib库。
 
IDE的“alt+5"命令并不能完全生成jar的包装库,你可以把这个定制视图类打包成b4xlib库。
是的,制作成b4xlib能够解决。同时,我发现,如果我将项目更改为默认的b4a项目而不是b4xPage项目,那么alt+5命令生成的库就能够正常运行了。我想,问题出在我试图将库代码建立b4xpage项目中——如果我的目标是创建一个库,那么在库代码中使用b4xpage模块似乎完全是多余的,因为库中的组件并不需要、可能也无法切换page。因此,当生成的库中包含了b4xpage时,这反而与测试项目中的b4xpage模块起了冲突。
 
Top