2016-10-26 36 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()); 

} 
}