Runnable jar与java -jar运行正常,但双击出现问题
问题描述:
我正在使用eclipse IDE,并且使用'export-> Runnable Jar'导出了我的项目。在我的代码,我已加载使用Runnable jar与java -jar运行正常,但双击出现问题
URL map1url = this.getClass().getResource("map01.txt");
后来
inputmap = new File(map1url.getFile());
一张地图,然后使用
Scanner sc = null;
try {
sc = new Scanner(inputmap);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
现在,当我打包map01.txt到扫描其数据jar,然后双击它,它会运行,但无法找到map01.txt。当我使用java -jar时,它运行,但仍然无法找到地图。 当我将map01.txt放置在与jar文件相同的目录中,但实际上并不放在jar中,然后双击它时,它会运行,但不会找到映射。如果我使用java -jar运行它,它会运行并加载地图。这个问题的原因是什么?我该如何解决它?而map01.txt是唯一不起作用的资源。我已经加载了许多放置在jar文件中的图像,并且它们都加载并显示正常。对于图像我用
URL url = this.getClass().getResource("myImage.gif");
try {
BufferedImage myImage = ImageIO.read(url);
} catch (IOException e) {
}
为什么他们的工作,而不是我的地图?我该如何解决这个问题,以便我可以将所有资源打包到一个jar中,然后双击它运行?
答
当你说“新文件(map1url.getFile())”时,你最终会得到一个java.io.File,它指向当前目录中的一个文件。如果该文件实际上位于进程的当前目录中(如果文件位于shell的当前目录中并且使用“java -jar”,则会发生这种情况;否则这将不起作用;否则不会。
为什么不直接使用的getResource()。的OpenStream()来读取地图文件?
因为它必须是一个文件对我来说,扫描。 – Keelx 2011-04-09 22:30:03
不。扫描仪具有接受一个InputStream几个构造函数(你会得到什么来自openStream()),它们会一起插入。 – 2011-04-09 22:36:13