2012-09-05 133 views
1

我現在正在配置JPL,並想使用java來使用swi-prolog。JPL/SWI Prolog配置失敗

我下載SWI-Prolog的,這是6.2.0的最新的穩定版本,並安裝在d:\ swipl

首先,我添加以下路徑到PATH virable:d:\ swipl \ BIN ,它應該包含所有需要的dll文件。

然後,我添加了以下路徑到CLASSPATH virable:D:swipl \ lib \ jpl.jar,它應該是需要的jar文件。

當我試圖運行所提供的版本的例子中,我得到了以下錯誤:

Exception in thread "main" java.lang.UnsatisfiedLinkError: jpl.fli.Prolog.thread_self()I 
    at jpl.fli.Prolog.thread_self(Native Method) 
    at jpl.Query.open(Query.java:286) 
    at jpl.Util.textToTerm(Util.java:162) 
    at jpl.Query.Query1(Query.java:183) 
    at jpl.Query.<init>(Query.java:176) 
    at Versions.main(Versions.java:11) 

網上搜索後,我發現很多人只得到java.lang.UnsatisfiedLinkError: no jpl in java.library.path這是因爲設置了PATH變量,而不是我在這裏得到的錯誤:java.lang.UnsatisfiedLinkError: jpl.fli.Prolog.thread_self()I(是的,在行末有一個「I」)。

有沒有人得到過這個錯誤?我已經嘗試過幾個以前的SWI-Prolog版本,但也有其他類型的錯誤。我正在使用Eclipse IDE進行Java開發 - 我錯過了什麼嗎?

回答

3

我已將問題發送到swi-prolog.org提供的官方郵件列表([email protected]),幸運的是有人幫我證明存在一些問題在版本6.2.0中。然後我們都嘗試了6.0.2版本,並且它完美地工作。他提到(我注意到)在版本6.2.0的bin文件夾中沒有swipl.dll,這可能會導致該問題。

我已經通過電子郵件向員工彙報了問題,至少現在,我建議那些想要配置JPL的人應該下載6.0.2版本。有三件事要記住:

  1. 添加一個新的變量SWI_HOME_DIR下系統變量中的環境變量,並設置路徑,您安裝SWI-Prolog的地方(我的是d:\ swipl);

  2. 將路徑%SWI_HOME_DIR%\ bin添加到PATH變量中,而不是使用類似於「D:\ swipl \ bin」的內容。 (否則,[致命錯誤:無法找到系統資源]會發生)

  3. 添加路徑%SWI_HOME_DIR%\ LIB \ jpl.jar到PATH環境變量,而不是使用類似「d:\ swipl \ LIB \ jpl.jar」。 (否則,[致命錯誤:無法找到系統資源]會發生)

如果您使用的是Eclipse的Java開發,似乎你並不需要在你的IDE配置。只要你按照上面的3個步驟添加正確的jar文件作爲外部庫,它應該沒問題。

我不確定臨時解決方案是否適用於所有人,但絕對有問題的每個人都應該先嚐試這種方法。只要在6.2.0版本中發現問題,我會在這裏添加一些評論。

順便說一句,據我所知,到目前爲止,有這個問題的人都在使用32位Windows。

+0

這是我再一次在64位Windows下的錯誤已在6.2.1中得到修復,而32位Windows下的錯誤已在6.2.2中修復,這是最新的穩定版本到現在。 – user1649263

2

嘗試通過運行>運行配置> [項目名稱]將路徑添加到java.library.path,並在「虛擬機參數」選項卡下添加以下內容。

-Djava.library.path="D:\swipl\bin;." 

此外, 「環境」 選項卡下,添加以下內容:

VARIABLE: PATH 
VALUE: D:\swipl\bin;${env_var:PATH} 

之後,轉至項目>屬性> Java構建路徑,選擇 「庫」 選項卡。 點擊「添加外部JARS ..」,找到您的jpl.jar

+0

謝謝。我嘗試了你的方法,但同樣的錯誤發生了;然後我試圖擺脫計算機屬性中的環境變量下的PATH設置以避免冗餘,並且我得到以下錯誤:線程「main」java.lang.UnsatisfiedLinkError中的異常:D:\ swipl \ bin \ jpl .dll:無法找到依賴庫 – user1649263

0

偉大偉大偉大,第二個答案是解決

  1. 創建SWI_HOME_DIR變量設置SWI序言安裝目錄目錄 SWI_HOME_DIR ------- C:\ Program Files文件\ swipl
  2. 集PATH指向圖書館和斌這樣 PATH ------%SWI_HOME_DIR%\ BIN;%SWI_HOME_DIR%\ LIB \ jpl.jar

這解決我的問題「異常在線程 「主要的」 java .lang.UnsatisfiedLinkError:java.lib中沒有jpl rary.path窗口「這是有點罕見,但它的作品發現。

0

我有同樣的問題。除了設置PATH之外,還需要驗證已安裝的SWI程序是否具有與JVM相同的體系結構(32或64)。