2012-06-04 218 views
0

在我的程序中的某個時刻,我正在用iText創建一個pdf文件。這個文件是創建的,所以人們可以看到它也添加到我的數據庫。它在Eclipse中工作得很好,但是當我創建一個可運行的jar時,它不起作用。該文件未被創建並且未被添加到數據庫中。我不知道爲什麼它不在罐子裏工作。在jar中創建文件

 PdfWriter writer = PdfWriter.getInstance(document, 
       new FileOutputStream(documentName.getName() + ".pdf")); 

///////

 File file = new File(document.getName() + ".pdf"); 

任何建議任何人嗎? THX所有

+0

因爲你只需要使用的文件名來創建文件,你可以在你當前的工作目錄中創建它,而不必是你的jar所在的目錄。這真的是你想要做的嗎? – Weeman

+0

*「在jar中創建文件」* Jar通常是「只讀」的。 –

+0

具體位置並不重要。我只是以當前的工作目錄爲例。 –

回答

0

只是嘗試這樣做:

PdfWriter writer = PdfWriter.getInstance(document, 
       new FileOutputStream("C:\\some_file.pdf")); 

,並檢查是否存在C盤爲SOME_FILE上的文件。我相信會。另外,我不知道文檔是什麼類型的對象,但可能它包含返回絕對路徑的方法。

編輯:
如果你在一個程序中再次使用這個文件我會做到這一點不同:

File file = new File(document.getName() + ".pdf"); 
PdfWriter writer = PdfWriter.getInstance(document, 
       new FileOutputStream(file)); 

甚至

String path = "some/safe/path/maybe/provided/by/user"; // in settings or sth 
File file = new File(path+document.getName() + ".pdf"); 
PdfWriter writer = PdfWriter.getInstance(document, 
       new FileOutputStream(file)); 
+0

沒有運氣。這也適用於日食,但不是從罐子。 –

+0

你可以發佈整個功能嗎?或私密發送?在我的代碼中似乎沒有問題。或者我可以給你發送我的jar文件,如果它能工作,我們將能夠找出它 – Kostek

+0

運氣好嗎?如果你解決了它,發佈解決方案,也許別人可以利用這一點,我也很好奇。 – Kostek

1

嘗試FatJar此創建的.jar將增加你使用的庫所創建的.jar

+0

我正在使用Fatjar! –

+0

在這種情況下,不知道... 祝你好運... – magodiez

0

您正在使用相對文件路徑名(?)。因此,如果從Eclipse或Jar運行,您的文件可能會保存在不同的位置(文件夾)。

您的文件總是保存在System.getProperty(「user.dir」)中。

+0

是的,但我一直都在使用它們,所以根據我運行它的位置而定。我將在特定位置保存並獲取文件。 –