私は最近多くの質問をしており、私の投稿はすべて同じ問題に関するものですが、段階が異なり、可能な回答も異なります (特定の問題は前のものとは異なりますが、密接に関連しているため)。ですから、私の質問を繰り返しているように見えたら、申し訳ありません。実際、私はそうではありません。私はGoogleとここで検索してきましたが、答えのどれも私の問題を解決していないようです.または私はそれらを間違っています.
さて、私のファイル階層は次のとおりです。
+ MyGame
+ build.xml
+ src
+ ThisIsWhereEclipsePutsTheXMLFile
+ build
+ manyFoldersWithClassFiles
+ aSpecialFolderWhereTheEntryPointIs
+ ThisIsWhereIWantMyXMLfileToBe.xml
+ game.jar
私の問題は基本的にこれです。私のプログラムは、そのステータスをファイルに保存してから、そのファイルを読み取ることになっています。このファイルは、同じフォルダー内の .jar ファイル (1 つだけ) の外にある必要があります。ファイルは存在してもしなくてもかまいません。存在する場合は、上書きする必要があります。
以前の質問で、同じディレクトリにある 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 *
なので、あまりミスをしているとは思えないのですが…
アリが何か関係あるのかな?何か案が?事前に感謝します(そして私の英語で申し訳ありません)