我正在尝试使用以下代码从资源目录中读取文件
new FileInputStream(new File(getClass().getClassLoader().getResource(keyFile).getFile()))
在运行时获取以下异常
java.io.FileNotFoundException:文件:\ D:\ WorkSpace \ server \ target \ server.jar!\ BOOT-INF \ classes!\ config \ key.pgp(文件名,目录名或卷标语法为错误)
在java.io.FileInputStream.open0(本机方法)
在java.io.FileInputStream.open(未知来源)
在java.io.FileInputStream。(未知来源)
答案 0 :(得分:3)
根据您要获取的资源在jar中的位置,您应该使用相对路径来获取资源。您还可以通过使用ResourceAsStream方法直接将资源作为InputStream来询问来完全跳过File对象:
InputStream in = getClass().getResourceAsStream("/config/key.pgp");
答案 1 :(得分:1)
从此:
java.io.FileNotFoundException:文件:\ D:\ WorkSpace \ server \ target \ server.jar!
代码看起来像是从罐子内部运行的,正在罐子中寻找文件。
几个选项:
1。)将文件添加到您的.class文件所在的jar中,并使用类路径获取文件(不要忘记开头的/):/com/mycompany/myproject/files/myfile.txt
2。)使用文件的绝对路径: “ D:\ WorkSpace \ server \ target \ BOOT-INF \ classes \ config \ key.pgp”