Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java getClassLoader().getResourceAsStream方法对于包含“0”的文件返回null;。LIB";延伸_Java_Jvm - Fatal编程技术网

Java getClassLoader().getResourceAsStream方法对于包含“0”的文件返回null;。LIB";延伸

Java getClassLoader().getResourceAsStream方法对于包含“0”的文件返回null;。LIB";延伸,java,jvm,Java,Jvm,我正在尝试使用从资源/路径加载文件 getClassLoader().getResourceAsStream("file.LIB") 但是该方法总是返回null,除非我将文件重命名为另一个扩展名,比如“.dll” 我已经查阅了官方Java文档,但没有结果 为什么该方法在该文件类型上的行为很奇怪 注意:我使用的是JDK 1.8.0_111 x86(由于该lib文件的限制,它只能在32位JVM中正常工作)它确实适合我,您需要确定您对lib文件的具体操作 import java.io.IOExcep

我正在尝试使用从资源/路径加载文件

getClassLoader().getResourceAsStream("file.LIB")
但是该方法总是返回null,除非我将文件重命名为另一个扩展名,比如“.dll”

我已经查阅了官方Java文档,但没有结果

为什么该方法在该文件类型上的行为很奇怪


注意:我使用的是JDK 1.8.0_111 x86(由于该lib文件的限制,它只能在32位JVM中正常工作)

它确实适合我,您需要确定您对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());

 }
}

你确定这个文件在你的类路径中吗?顺便说一句,当您以这种方式打开文件时,没有理由使用32位或64位JVM,它只在加载共享库时才起作用。是的,我确定,因为当文件在同一路径中重命名时,它会被加载。此外,我还有其他需要32位jvm(用于使用Prolog的共享库)的dll。该库是它们的一个依赖项。如果DLL需要另一个文件,您不需要使用类路径读取它,而类路径不是DLL加载它所使用的路径。为了使用System.loadLibrary加载库,我有一个DLL和一组文件需要在我的类路径上。因此,在启动时,我从项目的资源文件夹加载它们并将它们复制到相关路径,而不是强制用户手动执行/编写安装脚本。但这与我的问题无关。为什么类加载器不能很好地处理.lib文件扩展名,也没有任何例外?共享库使用的是路径而不是类路径。