首页 / JAVA / 使用“java -jar executable.jar”执行Jar是可以的,但即使有执行权限,“./ executable.jar”也会返回“Bad Magic Number”
使用“java -jar executable.jar”执行Jar是可以的,但即使有执行权限,“./ executable.jar”也会返回“Bad Magic Number”
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用“java -jar executable.jar”执行Jar是可以的,但即使有执行权限,“./ executable.jar”也会返回“Bad Magic Number”,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1744字,纯文字阅读大概需要3分钟。
内容图文
![使用“java -jar executable.jar”执行Jar是可以的,但即使有执行权限,“./ executable.jar”也会返回“Bad Magic Number”](/upload/InfoBanner/zyjiaocheng/728/85c9c28db4d54353abdb86f5306a78b6.jpg)
我有一个用maven构建的小应用程序:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>be.scripts.batchconverter.MainScript</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>create-executale-jar</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<finalName>batchconverter</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</execution>
</executions>
</plugin>
我可以使用“java -jar batchconverter”运行它,但是当我尝试使用“chmod x batchconverter.jar”然后执行“./batchconverter.jar”时,我得到了这个通用错误:
invalid file (bad magic number): Exec format error
我的JDK是oracle,“1.8.0_121”,我安装了binfmt-support,而且我运行的是ubuntu 16.04
这是清单:
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: jschoreels
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_121
Main-Class: be.scripts.batchconverter.MainScript
并且ls结果(证明x许可)
-rwxrwxr-x 1 jschoreels jschoreels 4,9M M?r 7 11:40 batchconverter.jar
有没有想法确定原因?
解决方法:
大多数文件格式都以固定的字节组合或“幻数”开头.
例如,Java类文件以字节或“幻数”0xcafebabe开头.
您的系统需要能够识别文件类型并知道要执行文件的内容.
您的系统不知道如何直接执行jar存档,并且unix系统配置为这样做是不典型的.
在ubuntu上它是possible to enable this with the binfmt-support package.
另一个解决方案是嵌入一个开始script into the head of the archive file,但它有点hacky.
基本上,操作系统将文件识别为shell脚本,然后脚本本身调用java命令.
例如spring-boot plugin is able to make use of this technique,它们嵌入了一个脚本,允许直接执行jar文件,以及作为init启动 – 停止脚本.
内容总结
以上是互联网集市为您收集整理的使用“java -jar executable.jar”执行Jar是可以的,但即使有执行权限,“./ executable.jar”也会返回“Bad Magic Number”全部内容,希望文章能够帮你解决使用“java -jar executable.jar”执行Jar是可以的,但即使有执行权限,“./ executable.jar”也会返回“Bad Magic Number”所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。