【问题标题】:Java Program Deletion (Mac/Linux)Java 程序删除 (Mac/Linux)
【发布时间】:2012-01-31 20:50:57
【问题描述】:

如何让我的 Java 应用程序自行删除,然后在 Mac/Linux 操作系统上自行关闭?我尝试了几个Runtime 命令,但它们似乎都不起作用。

可能是这样的:

try {
    Runtime.getRuntime().exec(new String[]{"/bin/sh", "-c", "rm \"" + getRunningJarPath() + "\""});
} catch (final IOException e) {}

注意:方法:getRunningJarPath 准确。

【问题讨论】:

  • 你看,我正在运行一台 Windows 计算机。我想完全确定此代码适用于 Mac/Linux。
  • 如果您想确定,请在平台上进行测试。 Linux 在 vmware player 中运行良好。
  • 我只是想知道是否有人可以只花 5 分钟为我测试一下,这样我就不必在 Mac 上花费 1000 多美元了?
  • 使用Java WebStart,让JVM自己管理。

标签: java linux macos operating-system delete-file


【解决方案1】:

一般来说,这是不可能的:您的程序可能碰巧没有删除自身的权利。

另外,还有一个问题:当你的程序运行时,JVM 持有 JAR 的读锁,所以很可能你不能马上删除它。

通常,您从脚本运行程序,该脚本将检查退出代码并在必要时删除文件。

【讨论】:

  • 基于 Unix 的系统允许在打开文件时删除文件。
  • 据我所知,这取决于底层文件系统——而且您事先并不知道存在哪个文件系统。
  • 不,这取决于操作系统。
【解决方案2】:

您可以创建一个 cron 作业来删除文件,该作业将在延迟后开始

【讨论】:

  • 尝试 { Runtime.getRuntime().exec(new String[]{"/bin/sh", "-c", "rm \"" + getRunningJarPath() + "\""} ); System.exit(0); } 捕捉(最终 IOException e){}
【解决方案3】:

您没有说明您希望之后删除该程序的原因。

无论如何,您不应该依赖自己操作文件系统。我建议您改用 Java WebStart,因为它提供了您需要的所有文件系统缓存(包括过期)。

【讨论】:

    猜你喜欢
    • 2011-09-08
    • 1970-01-01
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多