最近一直在问很多,我所有的帖子都是关于同一个问题,但在不同的阶段和不同的可能答案(因为具体问题与上一个不同,但密切相关)。所以,如果看起来我在重复我的问题,我很抱歉。事实上,我不是。我一直在谷歌和这里搜索,但似乎没有一个答案能解决我的问题,或者我弄错了。
好吧,我的文件层次结构是:
+ MyGame
+ build.xml
+ src
+ ThisIsWhereEclipsePutsTheXMLFile
+ build
+ manyFoldersWithClassFiles
+ aSpecialFolderWhereTheEntryPointIs
+ ThisIsWhereIWantMyXMLfileToBe.xml
+ game.jar
我的问题基本上是这样的:我的程序应该将其状态保存到文件中,然后读取该文件。该文件应该在 .jar 文件之外(只有一个),在同一个文件夹中。该文件可以存在或不存在。如果它存在,它应该覆盖它。
在我之前的问题中,我询问了如何读取同一目录中的 xml 文件。当我从 Eclipse 使用它时,我得到的答案实际上解决了我的问题。
但我需要用我的整个程序创建一个 .jar 文件,并且我需要我的程序在我要求它执行此操作时创建这样的 xml 文件。
我的 save() 是这样的,当我在 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 *
所以,我不认为我在那里犯了太多错误......
蚂蚁可能与它有关吗?任何想法?事先谢谢(对不起我的英语)