【问题标题】:jar writes to file from cmd but not double clickjar 从 cmd 写入文件但不双击
【发布时间】:2013-07-05 06:48:37
【问题描述】:

我导出了我的 java 项目并运行了它。起初,当我双击时它不起作用,但经过一些研究,我遇到了这个解决方案

我所做的是创建一个批处理文件 jax.bat,说:@java -jar %1 我把它放在我的 java/bin 文件夹中。然后我将 .jar 文件与 jax.bat 相关联。

之后问题似乎解决了。但是,当我尝试在我的朋友计算机上运行它时,我发现从命令提示符运行时它会按预期写入文件,但是当它通过双击运行时却没有。这是文件编写器的代码

File writeTo = new File("Destinations.txt");
BufferedWriter bw = new BufferedWriter(new FileWriter(writeTo),32768);
//Some lines later
bw.write("The price is $"+ prices.get(lowest)+" travelling to "+ places.get(i)+" on "+ month+"/"+day);
bw.newLine();
          }
bw.close();

编辑:我尝试添加 String workingDir... 并在他的计算机上运行它。消息出现了,但说文件在 Windows/System32 中

Edit2:我只是通过从 eclipse 中导出一个可运行的 jar 来构建我的 jar 文件。

【问题讨论】:

标签: java file-io jar


【解决方案1】:

当您通过双击运行 JAR 时,它可能对工作目录做了一些奇怪的事情。您的文件被写入当前工作目录(因为您没有指定路径),这可能不是您要查找的位置。您可以执行以下操作来获取当前工作目录:

// Get the current working directory
String workingDir = System.getProperty("user.dir");
// Display workingDir in a Swing message dialog window
JOptionPane.showMessageDialog(null, workingDir);

Destinations.txt 应该出现在workingDir 指示的目录中。

另一方面,如果问题只是通过双击启动程序时程序实际上没有正确运行,那么当消息对话框没有出现时应该很明显。

【讨论】:

  • 在他的电脑上说目录是 System32。然而,它已经在我们尝试过的第三台计算机上运行。有什么想法吗?
  • 尝试运行Jarfix (johann.loefflmann.net/jarfix) 看看是否能解决工作目录问题。
猜你喜欢
  • 2011-11-11
  • 2013-05-18
  • 2020-01-23
  • 1970-01-01
  • 2012-03-04
  • 2012-02-25
  • 2021-09-25
  • 2018-12-13
  • 1970-01-01
相关资源
最近更新 更多