外部jar在启动后崩溃

时间:2014-03-28 19:59:03

标签: java freeze launcher

我目前正在制作一个小型2D游戏,因为我很懒,并且不想总是将最新版本的游戏发送给我的朋友,我制作了一个保持游戏的发射器如果版本过时,则从FTP服务器下载最新版本进行更新。这很好用。但那时游戏本身就存在问题。

这就是我开始游戏的方式:

File file = new File(directory + sep + "thegalidor.jar");
Desktop desktop = Desktop.getDesktop();
if(!isOffline){ //If the player has no connection they can still play the game in offline-mode
  if(!txtUser.getText().isEmpty() && txtPw.getPassword() != null){
    if(Downloader.getCanLogin(txtUser.getText(), txtPw.getPassword())){ //The player has to login first, if they have a connection to the FTP-Server
      try {
        desktop.open(file);
        System.exit(0);
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
  }
} else {
  try {
    desktop.open(file);
    System.exit(0);
  } catch(IOException e){
    e.printStackTrace();
  }
}

dircetory变量设置为user.home +保存游戏文件的目录.sep变量只是特定于操作系统的file.seperator。游戏启动没有任何问题,我可以像它应该的那样玩游戏。我可以加载保存文件或启动新的保存文件。但是当我试图保存游戏时它只是冻结而没有任何输出。

这是我的保存方法:

public static void saveGame() {
  URL resource = Main.class.getResource(saveFile);
  File file;
  BufferedWriter bw;

  try {
    file = new File(resource.toURI());

    file.delete();
    file.createNewFile();

    bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));

    Level level = gsManager.getClientLevel();

    bw.write(level.getPath());
    bw.newLine();

    bw.write(level.getPlayer().getXPos() + " " + level.getPlayer().getYPos() + " " + level.getPlayer().getHealth());

    bw.close();
  } catch (IOException | URISyntaxException e) {
    e.printStackTrace();
  }
}

保存文件位于游戏罐中,当我在没有启动器的情况下启动游戏时,一切都按预期工作,只有当我使用启动器启动它然后想要保存我的游戏时它才会冻结。 有什么方法可以阻止我的游戏一直冻结吗?

0 个答案:

没有答案