簡體   English   中英

我的可執行文件.jar文件不會寫一個保存文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM