java - 如何在 android 中使用 swi-prolog

标签 java android jvm prolog jpl

我用 swi-prolog 开发了一个 prolog 程序,并使用带有 JPL.jar 的常规 java 为它附加了一个接口(interface),
那运行得很完美。

现在我想对 android 移动界面而不是 java 桌面界面做同样的事情。所以我创建了一个 android 应用程序,将 JPL 添加为外部 jar 并像之前一样调用 prolog 文件。代码中没有显示错误。

但是当我将它作为 android 应用程序运行时,它说 jpl.query$1 找不到。

这是日志猫

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.<init>(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.<clinit>(Prolog.java:85)
...

那么错误可能是什么。

我发现有人说 JPL(swi prolog) 不能在 android 中使用,这是真的。

我该怎么做才能让我的 prolog 应用程序在 android 上运行

谢谢
马西

最佳答案

SWI-Prolog 开发人员 Jan Wielemaker 最近在邮件列表中发布了在 Android 设备上使用 SWI-Prolog 的一些进展。见 [SWIPL] Holiday present: SWI-Prolog on Android

关于java - 如何在 android 中使用 swi-prolog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18357171/

相关文章:

java - Libgdx 我将如何检查鼠标是否悬停在 TextField 上?

java - 无法在 Tomcat 应用程序中加载 .properties

java - 表中相对元素的XPath

android - 将构建日期/时间添加到 Android 项目

jvm - Java 虚拟机和交换空间

java - 将json数据写入和读取到内部存储android

java - 在节电模式 Android 上运行后台服务

android - 如何使 RatingBar 显示五颗星

java - 后续调用可以使用OSR编译的方法吗?

java - OpenJDK 64 位服务器虚拟机警告 :Options -Xverify:none and -noverify were deprecated in JDK 13