我正在制作一款自上而下的射击游戏,但是当罐子导出时,我似乎无法加载世界。
创造新世界:
world = new World(handler, "res/worlds/world1.txt");
在世界构造函数中加载世界:
loadWorld(path);
loadWorld 函数包含以下行:
String file = Utils.loadFileAsString(path);
然后,我将文件的所有内容加载到 int[][] 数组中并继续
在 Utils 类中,我有以下代码:
public static String loadFileAsString(String path) {
StringBuilder b = new StringBuilder();
try {
BufferedReader br = new BufferedReader(new FileReader(path));
JOptionPane.showMessageDialog(new JFrame(), "File Loaded (Dev testing)");
String line;
while((line = br.readLine()) != null)
b.append(line + "n");
br.close();
} catch(IOException e) {
e.printStackTrace();
}
return b.toString();
}
但它卡在
BufferedReader br = new BufferedReader(new FileReader(path));
部分,因为 JOptionPane 窗口未显示。
它在 Eclipse 中运行时有效,但在导出为 Runnable Jar 文件时无效。
我导出的 jar 文件的图像在 7zip 中打开:http://imgur.com/AX240ha
任何帮助将不胜感激!
雷加兹, 凯尔多·
无论放置.jar的位置,您的程序都会在目录中搜索 worlds 文件夹。但是由于世界文件夹在罐子里,所以不会找到它。因此,您有以下两种解决方案:
- 将世界文件夹移出你的罐子
-
使用如下所示的特殊代码从 jar 内部加载数据:
InputStream input = World.class.getResourceAsStream("/worlds/world1.txt"); BufferedReader reader = new BufferedReader(new InputStreamReader(input));
如果您只想将单个jar文件发送给其他人,则应选择第二个选项。但是,如果您使用像Steam这样的平台,甚至是简单的安装程序,则应使用第一个选项。
请注意,当您选择第二个选项时,如果将res文件夹设置为源文件夹(右键单击res文件夹:构建路径>用作源文件夹(,则代码可能仅在 Eclipse 中有效。