[英]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.