在MyEclipse下运行正常 打成jar包后 报错 
        java.io.FileNotFoundException: src\FireAndSea\DE.txt (系统找不到指定的路径。) 
出错的代码如下:1 public class DateAndEpisode {
2     private String fireDate;
3
4     public DateAndEpisode() {    
5 fs = new File("src/FireAndSea/DE.txt");
6                 setFireDate();
7     }
8
9     public void setFireDate() {                       
10 try {
11 Scanner input = new Scanner(fs);
12 } catch (FileNotFoundException e) {
13 // TODO Auto-generated catch block
14 e.printStackTrace();
15 }
16 if(input.hasNext())
17 {
18 fireDate = input.next();
19 }else{
20 System.out.println("file is null");
21 }
22 input.close();
23 }出错地方在第16行,即第一次调用 input 这个scanner对象时报错,大致是因为打包后的jar文件不在是一个文件夹,而是一个文件,相对/绝对路径在一个文件中不在起作用,但是应该怎么去修改,大侠救下谢谢。

解决方案 »

  1.   

    在 Eclipse IDE环境下运行时,当前目录缺省是工程目录,一般来说,就是 src 的上级目录打成jar包后,就是在你自己的JVM里运行了,环境变量就不会有 Eclipse帮你设置了,所以需要你自己负责。你这个情况,如果 DE.txt 不是达到jar包里的话,就需要在当前目录建立一个src/FireAndSea的文件夹,把DE.txt放进去
    如果DE.txt是打到jar包里的话,要用 class.getResource(), 这个时候,jar包一般是把src以下的文件打包,换句话说,根目录不是项目文件夹了,而是 src 了,路径就要用 /FireAndSea/DE.txt
      

  2.   

    你说的路径改为/FireAndSea/DE.txt 这个我试过了 不行 相同错误
      

  3.   

    把DE.txt文件同class文件放在一起,使用相同路径.如果需要从外部引入文件,为什么要在初始化函数里面读取文件呢?可以通过参数在运行时设值啊!
      

  4.   

    看来你是把文件打包到jar里了,你用的哪个API来获取这个文件的?不能用File的API系列了,要用类似
    getClass().getResourceAsStream( "config.properties "); 
    这样的API
      

  5.   

    我是将DE.txt同项目一同打包了。 我需要使用 Scanner对象 来读取文件中的数据 
    你所说的使用getClass().getResourceAsStream( "config.properties "); 具体应该如何实现。 
    主要问题是要实现从DE.txt文件中读取数据。 
      

  6.   

    getClass().getResourceAsStream()会返回一个流对象,可以用 InputStream,或者Reader来操作。
    类似的帖子有很多,可以找找看,这个需要注意路径问题