簡體   English   中英

eclipse插件項目中的FileNotFoundException

[英]FileNotFoundException in eclipse Plugin project

誰能告訴我如何使我的插件項目識別文件。 我有一個絨球。 我的項目路徑中的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)

您將必須在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();
        }

這條線

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());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM