eclipse插件项目中的FileNotFoundException

时间:2014-07-07 09:17:24

标签: java eclipse maven pom.xml filenotfoundexception

任何人都可以告诉我如何通过插件项目识别文件。 我有一个pom。我的项目路径中的xml文件,如" AA / pom.xml"我能够复制这个文件并在另一个位置创建一个新文件。 但是当我在插件项目中做同样的事情时,我收到了FileNotFoundException。

下面的代码适用于简单的java项目,但不适用于eclipse插件项目。

private void createPomFile(String location, String projectName, String string) throws IOException {
    BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("\\pom.xml"), "UTF-8"));
    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(location + projectName + string), "UTF-8"));

    String line = null;

    while ((line = reader.readLine()) != null) {
        writer.write(line);
        writer.write("\n");
    }
    // Close to unlock.
    reader.close();
    // Close to unlock and flush to disk.
    writer.close();

}

堆栈跟踪:

java.io.FileNotFoundException: \pom.xml (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at createservicestemplate.wizards.SampleNewWizard.createPomFile(SampleNewWizard.java:320)
at createservicestemplate.wizards.SampleNewWizard.doFinish(SampleNewWizard.java:288)
at createservicestemplate.wizards.SampleNewWizard.access$0(SampleNewWizard.java:118)
at createservicestemplate.wizards.SampleNewWizard$1.run(SampleNewWizard.java:86)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)

2 个答案:

答案 0 :(得分:0)

您必须删除\\参数中的FileInputStream。这样Java代码就直接在项目文件夹下搜索文件。

在您的代码中,java类在放置工作空间的目录中搜索pom.xml。

例如,如果工作区位于&#34; D:&#34;驱动,然后在\\pom.xml中使用FileInputStream执行代码,然后您的代码搜索D:\\ pom.xml的存在。因此,pom.xml作为AA \\ pom.xml存在于您的项目中,抛出异常。

BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("pom.xml"), "UTF-8"));

用户需要后的UPDATE:对于Eclipse插件

对于eclipse插件,以下内容可行。在您的最新评论之后想出来。我在Eclipse插件中检查过相同的内容,它对我有用。

       try {
            String line = null;
            FileInputStream fi = (FileInputStream) your_class_name.class.getResourceAsStream("/pom.xml");
            BufferedReader bf = new BufferedReader(new InputStreamReader(fi));
            while((line = bf.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

答案 1 :(得分:0)

这一行

BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("\\pom.xml"), "UTF-8"));

说:&#34;在当前磁盘驱动器的根目录中读取名为pom.xml的文件&#34; (这就是\的意思)。

检查当前目录是什么以及pom文件在哪里:

System.out.println(" Working directory is "+ new File("temp.txt").getCanonicalPath());