2016-10-26 68 views
1

我試圖使用getClassLoader()。的getResourceAsStream方法與「.LIB」擴展

getClassLoader().getResourceAsStream("file.LIB") 

加載從資源/路徑下的文件,但該方法始終返回null,除非我重命名文件返回null將該文件轉換爲另一個擴展名,例如「.dll」。

我查看了官方的Java文檔,但無濟於事。

爲什麼該方法在該文件類型上出現奇怪現象?

注:我使用的是JDK 1.8.0_111 86(由於在該庫文件,只用32位JVM行之有效的約束)

+0

你確定這個文件在你的類路徑中嗎?順便說一句,當你以這種方式打開文件時,沒有理由使用32位或64位JVM,它只在加載共享庫時很重要。 –

+0

是的,我敢肯定,因爲當文件被重命名在相同的路徑,它被加載。此外,我還有其他需要32位jvm的dll(使用Prolog的共享庫)。該lib是它們的依賴項之一 –

+0

如果一個DLL需要另一個文件,則不需要使用類路徑來讀取它,而不是DLL將用來加載它的路徑。 –

回答

0

它爲我的作品,你需要確保你在做什麼lib文件。

import java.io.IOException; 
import java.io.InputStream; 
import java.util.Properties; 

public class FileHelper { 

public String getFilePathToSave() { 

    Properties prop = new Properties(); 
    String filePath = ""; 

    try { 

     InputStream inputStream = 
     getClass().getClassLoader().getResourceAsStream("abc.lib"); 

     prop.load(inputStream); 
     filePath = prop.getProperty("json.filepath"); 

    } catch (IOException e) { 
      e.printStackTrace(); 
    } 

    return filePath; 

    } 
public static void main(String args[]) { 
    FileHelper fh = new FileHelper(); 
    System.out.println(fh.getFilePathToSave()); 

} 
}