2

我有一个包含一些可执行脚本文件的应用程序。而且我知道我们将在其上部署应用程序的目标机器具有 java.util. 因此,我将应用程序打包在 java 存档中,并使用“jar xf jarFileName”在目标机器上提取。但可执行脚本不再可执行。是的,我们可以运行“chmod _x scriptName”。但是脚本是否可以在从 jar 文件中提取而无需用户干预的情况下执行?我已经读过:这个相关的问题,但这并不是为了保持可执行性。

4

2 回答 2

0

好吧,JAR 文件实际上是一个 ZIP 文件,所以这个问题涵盖了您要问的大部分内容:使用 JDK 5 api 从 zip 文件中提取时维护文件权限

问题是像执行位这样的东西是特定于操作系统的,并且在使它们在不同的操作系统上工作时存在各种各样的问题。“执行”位也不例外。一个典型的(外部)ZIP 文件提取器应该能够处理这个问题(以相关信息首先在 ZIP 文件中为模!)。但是,当您以编程方式提取 ZIP / JAR 文件时这样做会涉及取消选择“额外数据”字节数组......我认为。我不知道该jar命令的作用...尽管您可以查看源代码,如果您是游戏...

如果您知道要提取的文件/脚本应该是可执行的,我建议您只需修改您的提取过程以在提取后适当地设置执行位。在 Java 7 中,您可以使用新的 NIO 文件属性 API 来做这件事。或者在chmod外部运行。您也可以尝试使用unzip实用程序而不是jar...进行提取,尽管这假设平台已unzip安装。

于 2013-04-13T03:10:16.647 回答
0

如果您想在 Windows 以及 OS X 等 unix 上进行部署,可以免费获得 DOS/Windows 版本的标准实用程序,例如 chmod。您很可能可以将它们与您的应用程序一起分发,并设置路径,以便当且仅当没有可用的本机版本时,安装脚本才能找到您的 Windows chmod.exe,就像在 unix 系统上那样。当然,您必须在不同的系统上进行足够的测试,以确保在某些不寻常的情况下这不会失败。

于 2013-04-13T04:21:34.840 回答