如何解决使用 prolog 的文件问题存在错误
为什么在使用 Eclipse 时文件运行没有问题,但是当我创建相同程序的 jar 文件时,我无法在我的电脑上本地运行它?
这是我得到的错误,其中 a 是输入,signal.pl 是我在桌面中传递的文件:
C:\Users\HP\Desktop>java -jar ADE2.jar a signal.pl
Exception in thread "main" org.jpl7.PrologException: PrologException: error(existence_error(source_sink,a),_0)
at org.jpl7.Query.fetchNextSolution(Query.java:438)
at org.jpl7.Query.hasMoreSolutions(Query.java:342)
at org.jpl7.Query.oneSolution(Query.java:872)
at org.jpl7.Query.hasSolution(Query.java:950)
at ADE.executeGorgias(ADE.java:19)
at ADE.main(ADE.java:41)
解决方法
我假设您在两个场景中有两个不同的工作目录。
SWI-Prolog 以 public interface SampleRepository extends JpaRepository<SamplelMaster,UUID> {
String fromQuery = " FROM journal_master jm " +
" INNER JOIN journal_details jd on jm.id = jd.journal_master_id " +
" WHERE jd.is_user_input = true and jm.voucher_type= :voucherType "+
" AND (:status is null or :status='' or jm.status = :status) "+
" and (:voucherNumber is null or :voucherNumber='' or (jm.voucher_no = :voucherNumber)) " +
" and (:fromDate is null or :fromDate='' or (jm.voucherDate >= :fromDate) " +
" and (:toDate is null or :toDate='' or (jm.voucherDate < :toDate)" ;
@Query( value = "SELECT jm.voucher_date as voucherDate," +
"jm.voucher_no as voucherNo," +
"jm.description as description," +
"jm.is_posted as isPosted," +
"jm.status as status," +
"jm.payment_type as paymentType,"+
"CASE " +
"WHEN jd.debit > 0 THEN SUM(jd.debit) " +
"WHEN jd.credit > 0 THEN SUM(jd.credit) " +
"END AS amount" +
fromQuery
+
" GROUP BY jm.voucher_date,\n" +
" jm.voucher_no,\n" +
" jm.payment_type,\n" +
" jm.description,\n" +
" jm.is_posted,\n" +
" jm.status,\n" +
" jd.debit,\n" +
" jd.credit",countQuery = "Select count(DISTINCT jm.id) " + fromQuery,nativeQuery = true
)
Page<SampleMasterList> findAllByVoucherType( @Param("voucherType") String voucherType,Pageable pageable,@Param("status") String status,@Param("voucherNumber") String voucherNumber);
的形式提供 working_directory/2
谓词。
如文档所述:
将 working_directory(-Old,+New)
与当前工作目录的绝对路径统一,并将工作目录更改为 Old
。使用模式 New
获取当前目录。
因此,我建议在两种情况下测试 working_directory(CWD,CWD)
以查看您的工作目录是否不同,这可能会导致在使用相对路径时出现问题。
编辑:您还可以使用 absolute_file_name/3
来确保您的“Eclipse 用例”和“jar 用例”以相同的方式解析文件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。