gpt4 book ai didi

java - 我的可执行 .jar 文件不会写入保存文件

转载 作者:搜寻专家 更新时间:2023-11-01 03:51:50 25 4
gpt4 key购买 nike

我正在为一项学校作业制作游戏,其中一个功能是可以保存和加载游戏。虽然在 Eclipse 中一切正常,但在将其设为可执行 jar 后,它不会在指定位置创建文件。

我正在使用此代码将其保存在我想要的文件夹中:

see below for full code

请注意,已创建文件夹、四开本和保存文件,但保存文件本身并未创建。

我正在使用以下代码将对象写入 .sav 文件:

see below for full code

这与权限有关吗?


编辑:在 cmd 中运行它,当我尝试保存时没有异常。在 jar 所在的文件夹中添加了一个 java.policy 文件,没有区别。我得到了一个以前保存的文件并将其放在 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:非常感谢您提供的所有帮助,但我刚刚意识到我犯了一个非常愚蠢的错误...... else{return;} 没有按照我教的去做,可以完全删除。抱歉给您带来麻烦!

无论如何都要将这个问题标记为已关闭,还是我应该让它坐下来?

最佳答案

Java 程序(尤其是小程序)往往需要权限才能执行诸如读取和写入文件之类的操作。这就是为什么有 .policy 文件的原因。将名为 java.policy 的文件添加到与 jar 相同的目录中。在文件中,您必须授予权限。所以将其放入 .policy 文件中:

grant CodeBase "Example.jar"
{
permission java.security.AllPermission;
};

这将授予 Example.jar 的所有权限。

关于java - 我的可执行 .jar 文件不会写入保存文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24539573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com