我试图在Ubuntu服务器上运行我的java应用程序。我输入了绝对路径来读取该文件,但它产生了一个错误。
读取该文件的代码如下:
private static final String CREDENTIALS_FILE_PATH = "/home/dockeradmin/credentials.json";
InputStream in = application.class.getResourceAsStream(CREDENTIALS_FILE_PATH);
if (in == null) {
throw new FileNotFoundException("Resource not found: " + CREDENTIALS_FILE_PATH);
}
得到的错误是:
java.io.FileNotFoundException: Resource not found: /home/dockeradmin/credentials.json
当我尝试使用BufferedReader读取相同路径的文件时,一切都工作得很好。
:
BufferedReader br = new BufferedReader(new FileReader(new File("/home/dockeradmin/credentials.json")));
所以我的问题是,这两者之间的区别是什么,我如何解决我当前的问题?
这个错误的原因是getresourcesstream是用来定位类路径上的文件,而不能定位文件系统上的文件。
这行出了问题。
InputStream in = application.class.getResourceAsStream(CREDENTIALS_FILE_PATH);
我通过用
替换那个来修复这个问题InputStream in = new FileInputStream(CREDENTIALS_FILE_PATH);