【问题标题】:FileNotFoundException in eclipse Plugin projecteclipse插件项目中的FileNotFoundException
【发布时间】:2023-03-15 02:35:01
【问题描述】:

谁能告诉我如何使我的插件项目识别文件。 我有一个绒球。 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)

【问题讨论】:

  • 你是如何运行这段代码的?在 Eclipse 中还是通过命令行?
  • 你的“pom.xml”在哪里?我不认为它在根目录下?
  • 我不明白你的确切问题是什么。上面的代码只是复制了pom文件,那又怎样呢?上面的代码抛出了FileNotFoundException?那么很明显编译器找不到pom文件。
  • 我在 Eclipse 中运行它(作为 Eclipse 应用程序运行)。
  • pom 位于项目目录下。如果“A”是我的插件项目,那么 pom 位于“A/pom.xml”中。

标签: java eclipse maven pom.xml filenotfoundexception


【解决方案1】:

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

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

例如,如果您在“D:”驱动器中有工作区,那么在使用FileInputStream 中的\\pom.xml 执行代码时,您的代码会搜索是否存在 D:\\pom.xml。因此 pom.xml 在您的项目中以 AA\\pom.xml 的形式存在,抛出异常。

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

用户需要后更新:对于 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();
        }

【讨论】:

  • 它也不起作用。我粘贴的代码在一个简单的 java 项目中完美运行,带有 BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("pom.xml"), "UTF-8 "));但它不适用于eclipse插件项目。
  • 没用。它将 D:\eclipse 4.2\pom.xml 作为新路径。 :(
  • @user3607601 我得到了这个工作。请检查我更新的答案,您应该将项目内的文件作为流读取。
  • 什么是 BreakPointInfoView.class?
  • 那是我尝试过的班级。你可以把你的课放在那里。或用作 getclass.getResourceAsStream
【解决方案2】:

这一行

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

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

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

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

【讨论】:

    猜你喜欢
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    相关资源
    最近更新 更多