- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在项目中使用 jpl 库时遇到问题。
奇怪的是,在一个旧项目中,这是一个普通的 Java 应用程序,通过遵循此解决方案 JPL/SWI Prolog configuration failure 可以很好地与 jpl 库一起工作.该解决方案提到我必须配置我的环境变量才能使库与 Java 对话。
另一方面,我的新项目是maven项目。首先,我包含了 Maven 的以下依赖项。
<dependency>
<groupId>jpl</groupId>
<artifactId>jpl</artifactId>
<version>7.4.0</version>
<type>jar</type>
</dependency>
但我遇到了以下异常:
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: org.jpl7.fli.Prolog.current_query()Lorg/jpl7/fli/qid_t; at org.jpl7.fli.Prolog.current_query(Native Method) at org.jpl7.Query.close(Query.java:540) at org.jpl7.Util.textToTerm(Util.java:130) at org.jpl7.Query.(Query.java:185) at com.michalistourism.core.PrologHandler.RunGorgias(PrologHandler.java:47) at com.persistence.TourismSession.RunPrologFile(TourismSession.java:281) at com.michalistourism.tourismassistant.ChatBoxPanel.btnDoNowActionPerformed(ChatBoxPanel.java:109) at com.michalistourism.tourismassistant.ChatBoxPanel.access$100(ChatBoxPanel.java:22) at com.michalistourism.tourismassistant.ChatBoxPanel$2.actionPerformed(ChatBoxPanel.java:74) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at java.awt.Component.processMouseEvent(Component.java:6533) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component.processEvent(Component.java:6298) at java.awt.Container.processEvent(Container.java:2236) at java.awt.Component.dispatchEventImpl(Component.java:4889) at java.awt.Container.dispatchEventImpl(Container.java:2294) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) at java.awt.Container.dispatchEventImpl(Container.java:2280) at java.awt.Window.dispatchEventImpl(Window.java:2746) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
这是我抛出上述异常的代码片段。
public PrologReaderCollection RunGorgias(List<Context> contexts) {
JPL.init();
String filename = prologFilePath;
filename = filename.replace('\\', '/');
String t1 = "consult('" + filename + "')";
PrologReaderCollection output = new PrologReaderCollection();
Integer count =1;
for(Context cont : contexts) {
Query q1 = new Query(t1);
//Query q1 = new Query("consult",new Term[] {new Atom(t1)});
if (q1.hasNext()) {
String Request = "prove([" + cont.getName().toLowerCase() + "(" + cont.getParameters() + ")],Expl).";
q1 = new Query(Request);
while (q1.hasNext()) {
Map<String, Term> map = q1.nextSolution();
String expl = map.get("Expl").toString();
PrologReader pr = new PrologReader("Solution " + count + " for " + cont.getName().toLowerCase() + ":\n" + expl + "\n\n",cont.getSet(),cont.getName().toLowerCase());
output.add(pr);
count += 1;
if(count > 3) {
break;
}
}
}
count = 1;
}
return output;
}
然后我尝试添加一个指向 jpl jar 的 maven 依赖项,我在以前的 Java 项目中使用了它,其中 jar 文件位于项目 lib 文件夹中。
<dependency>
<groupId>jpl</groupId>
<artifactId>jpl</artifactId>
<version>7.4.0</version>
<scope>system</scope>
<systemPath>${basedir}/lib/jpl.jar</systemPath>
</dependency>
本例中的新异常如下:
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/jpl7/JPL at com.michalistourism.core.PrologHandler.RunGorgias(PrologHandler.java:37) at com.persistence.TourismSession.RunPrologFile(TourismSession.java:281) at com.michalistourism.tourismassistant.ChatBoxPanel.btnDoNowActionPerformed(ChatBoxPanel.java:109) at com.michalistourism.tourismassistant.ChatBoxPanel.access$100(ChatBoxPanel.java:22) at com.michalistourism.tourismassistant.ChatBoxPanel$2.actionPerformed(ChatBoxPanel.java:74) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at java.awt.Component.processMouseEvent(Component.java:6533) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component.processEvent(Component.java:6298) at java.awt.Container.processEvent(Container.java:2236) at java.awt.Component.dispatchEventImpl(Component.java:4889) at java.awt.Container.dispatchEventImpl(Container.java:2294) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) at java.awt.Container.dispatchEventImpl(Container.java:2280) at java.awt.Window.dispatchEventImpl(Window.java:2746) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) Caused by: java.lang.ClassNotFoundException: org.jpl7.JPL at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 41 more
有什么我可以做的吗?
最佳答案
我通过引用 jpl 的 7.0.1 版本而不是 7.4.0 版本的 maven 设法找到了解决我的问题的方法,并且成功了!显然我需要旧版本的库。
<dependency>
<groupId>jpl</groupId>
<artifactId>jpl</artifactId>
<version>7.0.1</version>
</dependency>
关于java - jpl 库不适用于 java maven 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46060422/
我在安装 jpl 库时遇到问题。我安装了最新的 swipl 版本(但我之前也尝试过不稳定的版本): SWI-Prolog 7.2.3 for Windows 7/8/10 64-bit edition
我正在使用 JPL 在 Java 程序中执行一些 SWI-Prolog 查询。当我想创建一个新查询时,我希望能够使用 jpl.Util.textToTerm 直接从用户输入中实例化 Terms,而无需
我对将 JPL 与 java 一起使用很感兴趣,但是在尝试编译 java 程序时出现错误消息提示“package jpl does not exist”。我如何将 jpl 导入 java? 最佳答案
我正在尝试将 Prolog 文件作为模块进行查询,因为 jpl 不支持多个 prolog vm。 在 swipl 控制台中,我可以成功地执行类似的操作 ?- consult(mod1:'data/lo
我正在尝试了解如何使用 JPL。为此,我将其中一个测试从文档部分 ( swipl\doc\packages\examples\jpl\java\Time ) 复制到 eclipse 并尝试运行它。 如
我想在 Prolog 中为人工智能建立一个知识库。首先,我想尝试通过做一个大象、巨型 Ant 等玩具示例来学习 Prolog 及其用途。 我正在使用:NetBeans 8.0.1、SWI-Prolog
我正在尝试使用 SWI-Prolog JPL 库,但我遇到了问题。 我试图让我的 Eclipse 项目访问 JPL,但是当我尝试启动该程序时,出现以下错误: Exception in thread "
我现在正在配置 JPL,想使用 java 来处理 swi-prolog。 我下载了最新稳定版的SWI-Prolog,6.2.0,安装在D:\swipl 首先,我在 PATH virable 中添加了以
我在项目中使用 jpl 库时遇到问题。 奇怪的是,在一个旧项目中,这是一个普通的 Java 应用程序,通过遵循此解决方案 JPL/SWI Prolog configuration failure 可以
我是一个 prolog-noob,并且对 java 中的 prolog-list 有疑问。 序言: event( 'Number1', 54.320021, 13.043840, [sp
我想查询通过 JPL 在 Java 中使用 Prolog,我阅读了文档 (http://www.swi-prolog.org/packages/jpl/java_api/getting_started
轻微的编辑:我在下面说JPL的Horizons库不是开源的。实际上,它可以在这里找到:http://naif.jpl.nasa.gov/naif/tutorials.html 在2013-01-0
我的一个项目需要 swipl 控制台输出(跟踪输出)。我正在尝试使用 JPL7 API 来执行此操作,但我似乎找不到从 swipl 控制台获取输出的方法。有什么办法可以做到这一点?或者是否有我可以运行
我在使用 JPL 时检索错误和警告消息时遇到一些问题。例如,尝试直接从 SWI-Prolog 查询不存在的文件会产生以下输出: 1 ?- consult('NonExistingFile'). ERR
我有两个 Prolog 文件。条款及细则如下: 子句.pl get(mary,milk). go(sandra,kitchen,1). get(john,football). go(john,hall
我想要做的是创建 Prolog 实例的副本并使用 JPL(Java-Prolog 接口(interface))加载该副本。我可以想到几种可能的方法来做到这一点,但没有一个能够完全解决,这就是我来这里的
在一个使用 JPL 与 Prolog 交互的 Java 应用程序中,我希望能够使用不同的设置重新启动 Prolog 引擎。例如,我想从 SWI 更改为 YAP(我使用方法 JPL.setNativeL
我一直在尝试 JPL 的多线程功能。据我从源代码中的注释中了解到,每个 Java 线程都分配了一个不同的 Prolog 引擎。显然,当在线程 A 中启动一个查询,在线程 B(由线程 A 生成)中执行另
我正在尝试使用 JPL 将我的对象持久保存到一个简单的 BDB 中。问题是,如果我尝试在主索引中存储子类,则会收到错误(如下)。 子类在数据方面没有任何不同,但它们在功能上不同,我希望子类成为编码的实
我想用java创建一个对象: MyObject obj = new MyObject (); 我想用 jpl 查询将它传递给 prolog。 如何完成java到prolog的对象传递? 我知道我可以在
我是一名优秀的程序员,十分优秀!