【发布时间】:2018-06-04 22:02:43
【问题描述】:
public class Main {
public static void main(String[] args) throws IOException {
System.out.println("----------Start------------------");
URL resource = Main.class.getClassLoader().getResource("test.txt");
System.out.println("resource: "+ resource.getPath());
File file = new File(resource.getPath());
BufferedReader reader = new BufferedReader(new FileReader(file));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
System.out.println("----------End------------------");
}
}
如果我从 IDEA 运行此代码 - 一切正常
----------Start------------------
resource: /D:/javaHz/target/classes/test.txt
1
2
3
4
5
----------End------------------
进程以退出代码 0 结束
如果我从 java -jar 重新运行 - 我会收到错误
D:\hz>java -jar hzTest-jar-with-dependencies.jar
----------Start------------------
resource: file:/D:/hz/hzTest-jar-with-dependencies.jar!/test.txt
Exception in thread "main" java.io.FileNotFoundException: D:\hz\file:\D:\hz\hzTe st-jar-with-dependencies.jar!\test.txt (Syntax error in file name, folder name, or volume label)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at java.io.FileReader.<init>(FileReader.java:58)
at test.Main.main(Main.java:15)
我不想使用getResourceAsStream
【问题讨论】:
-
你能解释一下为什么你不能使用getResourceAsStream吗?此外,你能分享一下jar'files结构吗? (展开文件夹)
-
@ Eleazar Enrique 我在资源中有 chromedriver.exe,我需要获取路径并设置为系统属性: System.setProperty("webdriver.chrome.driver","myPath/chromedriver.exe");
-
@ip696 使用您问题下方的编辑链接并将其放入您的问题中。您的问题显示的不是您需要的 - 您的问题显示在 Java 中读取文件,但您需要的是获取绝对路径。确保您的问题准确无误。