在Eclipse中导出Applet的签名JAR时出现FileNotFoundException

问题描述 投票:0回答:3

在我的客户端/服务器应用程序中,我需要将一些文件(

.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 中的所有替代工作在导出时都停止工作。

java eclipse jar inputstream filenotfoundexception
3个回答
1
投票

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

getResource
getResourceAsStream

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();

0
投票

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

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


0
投票

我生气后找到了解决办法。 Windows 没有打开这些文件的权限。 因此,以管理员权限运行浏览器即可正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.