我使用swi-prolog开发了一个prolog程序,并使用带有JPL.jar的常规java为其附加了接口,
运行得很好.
现在,我想使用android移动界面而不是java桌面界面执行相同操作.因此,我创建了一个android应用程序,将JPL添加为外部jar,并如前所述调用了prolog文件.代码中没有显示任何错误.
但是,当我将其作为android应用程序运行时,它说找不到jpl.query $1.
这是logcat
08-21 17:36:35.782: D/dalvikvm(659): DexOpt: unable to opt direct call 0x0cd8 at 0x08 in Ljpl/Query;.abort
08-21 17:36:35.812: W/dalvikvm(659): Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Ljpl/fli/Prolog;
08-21 17:36:35.812: D/AndroidRuntime(659): Shutting down VM
08-21 17:36:35.822: W/dalvikvm(659): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
08-21 17:36:35.916: E/AndroidRuntime(659): FATAL EXCEPTION: main
08-21 17:36:35.916: E/AndroidRuntime(659): java.lang.ExceptionInInitializerError
08-21 17:36:35.916: E/AndroidRuntime(659): at jpl.Query.open(Query.java:286)
08-21 17:36:35.916: E/AndroidRuntime(659): at jpl.Util.textToTerm(Util.java:162)
08-21 17:36:35.916: E/AndroidRuntime(659): at jpl.Query.(Query.java:198)
08-21 17:36:35.916: E/AndroidRuntime(659): at com.example.trtest.swi.main(swi.java:21)
08-21 17:36:35.916: E/AndroidRuntime(659): at com.example.trtest.MainActivity$1.onClick(MainActivity.java:70)
------
----
08-21 17:36:35.916: E/AndroidRuntime(659): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load jpl: findLibrary returned null
08-21 17:36:35.916: E/AndroidRuntime(659): at java.lang.Runtime.loadLibrary(Runtime.java:365)
08-21 17:36:35.916: E/AndroidRuntime(659): at java.lang.System.loadLibrary(System.java:535)
08-21 17:36:35.916: E/AndroidRuntime(659): at jpl.JPL.loadNativeLibrary(JPL.java:100)
08-21 17:36:35.916: E/AndroidRuntime(659): at jpl.fli.Prolog.(Prolog.java:85)
...
那么错误可能是什么.
我发现有人说JPL(swi prolog)不能在android中使用,是真的.
我该怎么办才能在Android上运行我的Prolog应用
谢谢
马西
解决方法:
SWI-Prolog开发人员Jan Wielemaker最近在邮件列表中发布了在Android设备上使用SWI-Prolog的一些进展.查看[SWIPL] Holiday present: SWI-Prolog on Android
标签:prolog,jvm,jpl,java,android
来源: https://codeday.me/bug/20191030/1968459.html