最近我一直在問很多,我的所有帖子都是關於同一個問題,但在不同的階段和不同的可能的答案(因爲具體問題不同於以前的一個,但密切相關)。所以,我很抱歉,如果它看起來像我重複我的問題。事實上,我不是。我一直在Google和這裏搜索,但沒有一個答案似乎解決了我的問題,或者我弄錯了他們。創建並讀取jar文件以外的xml文件
好了,我的文件層次是:
+ MyGame
+ build.xml
+ src
+ ThisIsWhereEclipsePutsTheXMLFile
+ build
+ manyFoldersWithClassFiles
+ aSpecialFolderWhereTheEntryPointIs
+ ThisIsWhereIWantMyXMLfileToBe.xml
+ game.jar
我的問題基本上是這樣的:我的程序應該保存它的狀態到一個文件,然後讀取該文件。該文件應位於.jar文件(僅有一個)之外,位於同一文件夾中。該文件可以存在或不存在。如果存在,它應該覆蓋它。
在我之前的問題中,我詢問了關於how to read an xml file that's in the same directory。當我從Eclipse使用它時,我得到的答案實際上解決了我的問題。
但是我需要用我的整個程序創建一個.jar文件,並且我需要我的程序來創建這樣的xml文件,只要我這樣做。
我保存()就是這樣的,它似乎是工作,當我在Eclipse中運行它,但是當我運行它執行我的.jar文件將無法正常工作:
public void save(Game game) throws IOException{
Document doc = DocumentHelper.createDocument();
doc.add(game.save());
File save=null;
save = new File("save.xml");
FileWriter writer = new FileWriter(save);
doc.write(writer);
writer.close();
}
這是我如何從文件中獲取信息回:
public Game getinfofromxml() throws IOException{
Game game;
SAXReader reader = new SAXReader();
try{
URL fileWithData= new File("save.xml").toURI().toURL();
Document document = reader.read(fileWithData);
Element alreadySavedGame= document.getRootElement();
game= getGameSaved(alreadySavedGame);
}catch(DocumentException ex){
throw new IOException();
}
return game;
}
同樣,這個工作從Eclipse的,但是當我從我的jar文件運行,這將不起作用。在Eclipse中,xml文件是在MyGame文件夾中創建的,但不是在我擁有我的.jar文件夾中。當我執行我的.jar時,根本沒有創建XML。
現在,我一直在閱讀,這可能與類路徑有關。所以,讓我告訴你如何編譯它:
1)我運行Ant,它使生成目錄。它不會自動創建.jar。 2)我創建Manifest.txt文件,其中我寫:
Main-Class: aSpecialFolderWhereTheEntryPointIs.MyMainClass
Class-Path: .
3)我創建的CMD .jar文件: jar cfm myGame.jar Manifest.txt *
所以,我不認爲我是犯了太多的錯誤...
可能螞蟻有什麼關係呢? 有什麼想法? 由於事先(和我的英語很抱歉)
是的,一般來說,你應該使用絕對路徑來控制你想要的文件的位置。您可以允許用戶通過屬性或某物來控制此路徑。 – 2012-07-18 04:23:53
如果我加倍clic .jar文件..是不是在該目錄中啓動的jvm? – FDrico 2012-07-18 04:35:40