2011-08-25 29 views
1

我得到一個錯誤信息是這樣的:Java錯誤 - 無法在java.library.path中找到庫?

The library libraryname.dll could not be loaded by Windows. Make sure that the library is in you Path environment variable. Exception in thread "main" java.lang.UnsatifiedLinkError: no libraryname in java.library.path.

這個錯誤是我試圖通過CMD運行在Windows XP的JAR文件。我想知道,java.library.path究竟在哪裏?我已經將C:\ Program Files \ Java \ jdk1.6.0_26添加到我的PATH,但它仍然給我錯誤。你將如何去調試呢?

謝謝。

+0

libraryname.dll的確切名稱很重要。 –

+0

確切的名字?你什麼意思?它又如何重要?謝謝。 –

+0

@Thorbjørn確切的名稱並不重要,它存在的目錄路徑足夠 –

回答

6

你可以簡單地傳遞的java.library.path的系統屬性,如下圖所示:

java -Djava.library.path=<path_to_dll> <main_class> 

首先,你需要找出其中libraryname.dll是在「path_to_dll」添加它上面。

+0

什麼是應該包括? –

+0

包含main()方法的類,即程序的入口點 –

+0

您錯誤地拼寫了「庫」。 – user396004

3

錯誤基本上說它找不到你的本地庫。 Java試圖通過查看java.library.path屬性來找到你的庫

這是一個你需要的系統環境,當你運行你的應用程序時,Java可以找到你的本地庫。幾種方法可以做到這一點:

  • 使用java -Djava.library.path =運行程序
  • 從代碼你也可以做的時候[路徑到庫中。

    
    System.setProperty("java.library.path", "/path/to/libs"); 
    
  • 從您的IDE進行設置。 Eclipse的一個例子都可以在此找到SO質疑How to set java.library.path from eclipse

編輯:下面一個很好的評論指出,#2不工作100%,因爲你可能不設置此之前調用的getProperty()。錯過了這一點,並感謝您指出了這一點。

+1

您建議的第二個選項不適用於'java.library.path'屬性。請參閱:http://stackoverflow.com/questions/5419039/is-djava-library-path-equivalent-to-system-setpropertyjava-library-path –

+0

那麼它不會一直工作。但是如果他在getProperty()之前設置它,我認爲它會起作用。好的一點,我應該在我的回答中提及並接受因爲丟失 – momo

+1

而不應該嘗試從代碼 –