导出.jar时出现FileNotFoundException

在我的客户端/服务器应用程序中,我需要从客户端向服务器发送一些文件( .txt.doc等)。 当我在Eclipse中运行我的代码时,它可以工作,但是当我导出Applet的签名JAR时,它没有。 它会抛出FileNotFoundException 。 我尝试以多种方式保存文件但没有成功。

 public static boolean saveFile(File sourceFile) throws IOException { DirectoryChooserDialog dialog = new DirectoryChooserDialog(); filePath = dialog.getDestinationFolder(); if (filePath != null) { InputStream inputFile = ClassLoader.getSystemResourceAsStream(""+sourceFile); filePath += File.separator + sourceFile.getName(); FileOutputStream outputFile = new FileOutputStream(filePath); int byteLetti = 0; while ((byteLetti = inputFile.read(buffer)) >= 0) { outputFile.write(buffer, 0, byteLetti); outputFile.flush(); } inputFile.close(); outputFile.close(); return true; } else return false; } 

使用替代代码:

 FileInputStream inputFile = new FileInputStream(sourceFile); 

要么

 InputStream inputFile = ClassLoader.class.getResourceAsStream(""+sourceFile); 

要么

 InputStream inputFile = FileSaving.class.getResourceAsStream(""+sourceFile); 

原始代码和Eclipse中的每个替代工作,并在导出时停止工作。

此代码正在查找类路径上的文件。 如果那里没有文件则抛出FNF。 当你在Eclipse中工作时,你的文件可能在src中,所以它被复制到bin。 将文件存档到jar后,可以访问getResourcegetResourceAsStream

 InputStream inputFile = this.getClass().getClassLoader().getResourceAsStream(sourceFile.getName()) 

或使用URL。 例如

 URL url = new URL("jar:file:/c:/path/to/my.jar!/myfile.txt"); JarURLConnection conn = (JarURLConnection)url.openConnection(); InputStream inputFile = conn.getInputStream(); 

您需要手动将资源复制到jar中。

为此,请使用7zip或winRar或其他任何内容,右键单击并“打开存档”。 然后将您的资源(例如png等)拖放到相应的文件夹(通常是根目录)。

我生气后找到了解决方案。 Windows没有打开文件的权限。 因此,使用管理员权限运行您的浏览器,它将工作。