【发布时间】:2015-05-19 02:18:21
【问题描述】:
我知道 Java Applet 对它们可以访问和不能访问的内容有很多限制,但我认为 JAR 是不同的。作为记录,我是 JAR 文件等的新手。
我为数据输入工具编写了一个 GUI,我希望能够将格式化的数据写入文本文件。这在程序从 Eclipse 运行时有效。但是,一旦打包到 JAR 文件中,我就不能再让写入文件部分工作了。它也不会出错。
这里没有一行代码可以分享,但是程序基本上允许用户做的是:
- 查看数据表
- 在 GUI 中将数据转换为文本字段
- 单击保存并在我选择的目录中生成包含此数据的文本文件
最后一步是我的可运行 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();
}
}
}
}
}
【问题讨论】:
-
不,没有限制。如果您详细说明“让我失望”是什么意思,我们可以提供进一步的帮助。
-
@m0skit0 谢谢——我刚才在我的问题编辑中详细说明了
-
eclipse 使用什么方法写入文件?你在做 I/O 重定向吗?文件编写器?序列化?
-
@Aify java.nio.file.Files 和 java.nio.file.Path
-
您应该调试并检查文件的完整路径。 Eclipse 有不同的运行环境,所以有时路径是不同的。我知道你“检查”了它,但在运行时再次检查你正在编写的文件的真实值。
标签: java jar executable-jar