[英]My executable .jar file won't write a save file
我正在為一個學校作業制作游戲,其中一個功能是可以保存和加載游戲。 雖然在eclipse中一切正常但在將其作為可執行jar之后,它將不會在指定位置創建文件。
我正在使用此代碼將其保存在我想要的文件夾中:
see below for full code
請注意,已創建文件夾quarto和savefiles,但保存文件本身不是。
我正在使用以下代碼將對象寫入.sav文件:
see below for full code
這與權限有關嗎?
編輯:在cmd中運行它,當我試圖保存時沒有例外。 將java.policy文件添加到jar所在的文件夾中,沒有區別。 我有一個以前保存的文件並將其放在quarto / savefiles映射中,因為我想看看它是否正確加載(這也使用user.home到達正確的文件夾)。 它正確加載。 我還搜索了savename.sav,看它是否將它保存在其他地方,沒有找到任何東西。
全班:
package quarto;
import java.io.File;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
public class TaskSpelOpslaan extends SpelGegevens{
public static void runSpelOpslaan() {
String savename = SpelOpslaanScherm.getSaveName();
String userHome = System.getProperty("user.home") + File.separator + "quarto" + File.separator + "savefiles";
String locatie = userHome;
File folder = new File(locatie);
if (!folder.exists()) {
folder.mkdirs();
}
try{
if(!savename.contains(".sav"))
{
savename = (savename+".sav");
}
else
{
return;
}
FileOutputStream saveFile=new FileOutputStream(folder+File.separator + savename);
ObjectOutputStream save = new ObjectOutputStream(saveFile);
save.writeObject(bordInfo);
save.writeObject(stukGeplaatst);
save.writeObject(stukGeselecteerd);
save.writeObject(spelerBeurt);
save.writeObject(gekozenStuk);
save.writeObject(bordImage);
save.writeObject(stukImage);
save.writeObject(naamSpeler1);
save.writeObject(naamSpeler2);
save.close();
}
catch(Exception exc){
exc.printStackTrace();
}
}
}
EDIT2:我很感謝你所有的幫助,但我剛剛意識到我犯了一個非常愚蠢的錯誤......其他{return;}沒有按照我的教導去做,可以完全刪除。 抱歉,添麻煩了!
無論如何標記這個問題還是應該讓它坐下來?
Java程序(尤其是applet)往往需要權限來執行讀取和寫入文件之類的操作。 這就是.policy
文件的原因。 將名為java.policy
的文件添加到與jar相同的目錄中。 在文件中,您必須授予權限。 所以把它放到.policy文件中:
grant CodeBase "Example.jar"
{
permission java.security.AllPermission;
};
這將授予Example.jar的所有權限。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.