我正在制作一个自上而下的射击游戏,但是当罐子出口时我似乎无法加载这个世界。
创造一个新世界:
world = new World(handler, "res/worlds/world1.txt");
在World构造函数中加载世界:
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
任何帮助将不胜感激!
Regads, Kerdo K。
答案 0 :(得分:2)
您的程序将在放置.jar的目录中搜索worlds文件夹。但由于worlds文件夹位于jar内,因此无法找到它。所以你有以下两个解决方案:
使用如下所示的特殊代码从jar内部加载数据:
InputStream input = World.class.getResourceAsStream("/worlds/world1.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
如果您只想将一个jar文件发送给其他人,则应该使用第二个选项。但是如果你使用像Steam这样的平台甚至是一个简单的安装程序,你应该使用第一个选项。
请注意,当您选择第二个选项时,如果您将 res 文件夹设为源文件夹(右键单击 res ),则代码可能仅在Eclipse中有效文件夹:构建路径>用作源文件夹)。