Jar文件无法将文件写入本地计算机

时间:2015-03-16 19:54:29

标签: java jar executable-jar

我知道Java Applets对于它们可以访问和不能访问的内容有很多限制,但我认为JAR是不同的。为了记录,我是JAR文件之类的新手。

我已经为数据输入工具编写了一个GUI,我希望能够将格式化数据写入文本文件。这从程序从Eclipse运行时有效。但是,一旦打包在JAR文件中,我就无法再使用“写入”文件了。它也不会出错。

这里没有单行代码可供分享,但该程序基本上允许用户做的是:

  1. 查看数据表
  2. 将数据转置到GUI中的文本字段
  3. 单击“保存”并在我选择的目录中生成包含此数据的文本文件
  4. 最后一步是我的可运行的JAR让我失望的地方。我点击保存,我的对话框显示所有内容,但是当我检查输出文件夹时,没有生成任何文件。注意:它与错误的路径无关 - 我已经检查过了。正如我上面所说,它适用于Eclipse。

    我有什么限制吗?理想情况下,我可以与其他几个人共享此可执行文件,以分配数据输入任务。是否有其他格式用于打包此程序以使其工作? (我花了很长时间在这上面,并希望用Java工作)

    下面是我的保存按钮的ActionListener。这就是魔术应该发生的地方:

    class WriteToFileListener implements ActionListener
    {
        public void actionPerformed(ActionEvent event)
        {
            String command = event.getActionCommand();
            if (command.equals(strWriteToFile)){
                System.out.println(strWriteToFile);
                int warning = JOptionPane.showOptionDialog(frame, "Text",
                        "Text", JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE, null, null, null);
                if (warning == 0)
                {
                    Path path = Paths.get(tfOutputDir.getText() + "\\" + tfFileName.getText() + ".txt");
                    ArrayList<String> output = new ArrayList<String>();
                    for (String s : tmp.items)
                    {
                        output.add(s);
                    }
    
                    try {
                        Files.write(path, output);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
    

1 个答案:

答案 0 :(得分:2)

好吧,我想我实际上已经回答了自己的问题,但我真的不明白为什么:

在Eclipse中打包JAR文件时,我选择了“将所需的库打包到生成的JAR中”。这给了我这个问题。

再次尝试时,我选择“将所需的库提取到生成的JAR中”。这解决了这个问题。

对两个选项here之间的差异有一个很好的解释,但我不明白为什么这会影响我的保存能力。也许@ m0skit0对路径有一点看法?它可能一直试图写入JAR吗?