【问题标题】:Java opening files - works from Eclipse, doesn't work in runnable JAR/exeJava 打开文件 - 适用于 Eclipse,不适用于可运行的 JAR/exe
【发布时间】:2017-07-26 15:53:46
【问题描述】:

我有一些用于打开文件的 java 代码:

Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + output.getAbsolutePath());

当我从 Eclipse 执行它时它工作得很好,但是,当我将项目导出到可运行的 JAR 时,该功能停止工作。我尝试了各种不同的选项来打开文件(Desktop.open、ProcessBuilder 等),结果都相同(Eclipse OK,runnable JAR not)。

这个确切的代码以前在我过去(1.5 年前)导出时有效。我相信那是在 Java 1.6 上,现在我们在 Java 1.7 上。不确定这是否是原因,我没有选择使用以前版本的 Java 进行编译。有什么想法吗?

【问题讨论】:

  • 如果可能的话,你能发布你得到的异常吗?
  • 你是在同一台机器上运行它吗?
  • 我会完全避免使用 dll:Java 可以在任何地方运行,这样您就必须绑定到 MS Windows 甚至可能是某个版本才能真正看到它工作。
  • 编辑您的问题并显示为output 赋值的代码。如果您调用 Class.getResource 或 ClassLoader.getResource 并在返回的 URL 上调用 getFile() ,它将永远无法工作,因为 getFile() 不会将 URL 转换为文件,而且 .jar 文件是 zip 存档它的条目不是实际的文件,只是压缩字节的子序列。

标签: java eclipse jar explorer


【解决方案1】:

感谢您尝试提供帮助。我想出答案很简单,我是个白痴:) 打开文件不是问题,文件一开始就没有被写入,而且没有被写入的原因很简单因为代码被设置为将其写入尚未创建的嵌套文件夹结构中。我什至没有想到这一点,因为我假设输出字符串中指定的任何必要文件夹都会自动创建。呵呵!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多