创建一个JAR文件 - 保留文件权限

3
我想了解如何创建一个保留其内容文件权限的jar文件。我正在将源代码和可执行文件打包在一个jar文件中,在使用之前将被提取。用户可以通过运行批处理/ shell脚本文件立即运行示例和演示。然后他们应该能够修改源代码并重新编译所有内容。
我试图使使用它的人生活变得更加容易,其中包括那些可能正在Linux / Unix上工作且是Java和编程新手的人。
我可以访问运行Windows和Linux的计算机。我不经常使用Linux,所以可能做错了什么。
我在Linux上使用jar cf ....创建了一个jar文件,并设置了文件权限,以便一切按需工作。然后我创建了一个新的测试目录并将jar文件内容提取到其中。文件权限未被保留...即-rw-rw-r--

你必须使用jar的原因是什么?它基于zip格式,据我所知,没有存储权限/所有者元数据的方法。Tar(tar.gz,tar.bz2)很适合这个。或者,你真的需要可执行的shell脚本吗?假设这是Java,运行程序的明显方法是java <mainclass> - jwelsh
我选择了JAR而不是ZIP,因为ZIP需要下载许可 - 可能考虑到其中包含可执行文件的风险。但是你说两者都不是好的选择。我对其他可能性持开放态度。我的目标是以Java程序员易于理解的方式提供它,无需超出Java程序员所需的内容(如随JDK一起提供的工具),在Windows和Linux上均可使用。这在某种程度上是哲学性的。我花了很多精力构建灵活、功能强大且易于使用的东西。这是我第一个产品,所以这是最终的。 - Roger F. Gay
1个回答

4

jar工具不会存储文件权限,因此您无法恢复未存储的内容。 jar格式不适用于将文件和元数据归档为ziptar,它是一个简单的容器,用于嵌入应用程序的Java文件。


我不断地阅读有关设置执行元文件(可执行的jar文件)的内容,继续思考这是否可能是确保其中文件保持可执行性的一种方法。 - Roger F. Gay
1
已接受。失望是无关紧要的。事实就是事实。该下载适用于Java程序开发人员。无论操作系统如何,他们都将拥有jar工具。Linux用户必须明白他们需要处理权限问题。 - Roger F. Gay
实际上,zip/jar格式的扩展允许在Linux中恢复文件权限,请参见https://dev59.com/KmYr5IYBdhLWcg3wfaSc。 - tkruse

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接