我开发了一个小的Java应用程序,并将其导出到jar文件(forms为eclipse)。 在这个应用程序中,我使用XML文件名来读取input数据:
private static final String INPUT_FILE_NAME = "./tasks.xml"; ............ //read input tasks queue XMLDecoder decoder = null; try { decoder = new XMLDecoder(new BufferedInputStream( new FileInputStream(INPUT_FILE_NAME))); searchTasksQueue = (BlockingQueue<SearchTask>) decoder.readObject(); } catch (Exception e) { e.printStackTrace(); } finally { if (decoder != null) { decoder.close(); } }
当我运行jar文件时,我把任务文件与jar放在同一个文件夹中。 一切工作正常在Windows 7下。虽然当我在Windows 2008服务器上做同样的事情,我得到:
C:\Users\Administrator>java -jar c:\scraper\scraper.jar java.io.FileNotFoundException: .\tasks.xml (The system cannot find the file spec ified) at java.io.FileInputStream.open0(Native Method) at java.io.FileInputStream.open(Unknown Source) at java.io.FileInputStream.<init>(Unknown Source) at java.io.FileInputStream.<init>(Unknown Source) at bmw.scraper.Starter.main(Starter.java:40)
哪里错了? 什么检查在Windows 2008服务器下运行这个?
PS
如果你的文件在你的jar文件夹中,那么使用Classloader来加载你的文件。
像下面一样
InputStream in = this.getClass().getClassLoader().getResourceAsStream(fileName);
代替
decoder = new XMLDecoder(new BufferedInputStream( new FileInputStream(INPUT_FILE_NAME)));
你可以使用fileInputStream是你正在加载文件的外部。
检查这个解决方案是否适合你。