无法执行二进制文件 - 可执行 Jar 文件
cannot execute binary file - Executable Jar file
我在尝试使用生成文件 运行 可执行 jar 文件时遇到问题。任何帮助表示赞赏。
$ ./HelloWorld
-bash: ./HelloWorld: cannot execute binary file
$ file HelloWorld
HelloWorld: Zip archive data, at least v2.0 to extract
$ ls -l
total 32
-rwxr-xr-x 1 myMac staff 773 Jan 17 06:55 HelloWorld
-rw-r--r-- 1 myMac staff 427 Jan 17 06:55 HelloWorld.class
-rw-r--r-- 1 myMac staff 120 Jan 17 05:52 HelloWorld.java
-rw-r--r-- 1 myMac staff 304 Jan 17 05:59 makefile
这是我正在使用的 2 个文件。
HelloWorld.java
class HelloWorld{
public static void main(String[] args){
System.out.println("Hello, world!");
}
}
生成文件
HelloWorld: HelloWorld.class
echo Main-class: HelloWorld > Manifest
jar cvfm HelloWorld Manifest HelloWorld.class
rm Manifest
chmod +x HelloWorld
HelloWorld.class: HelloWorld.java
javac -Xlint HelloWorld.java
这个命令:
jar cvfm HelloWorld Manifest HelloWorld.class
创建一个 jar
文件(jar
files are ZIP archives 就像 file HelloWorld
告诉你的那样)。这不是一个 "normal" 可以像 ./HelloWorld
那样 运行 的二进制文件。您需要使用 Java 到 运行 它为您服务:
java -jar HellorWorld
我也建议把上面的代码改成:
jar cvfm HelloWorld.jar Manifest HelloWorld.class
这样就可以清楚那个文件到底是什么了。
顺便说一句,因为 HelloWorld
不是二进制文件,所以您不需要命令 chmod +x HelloWorld
。
我在尝试使用生成文件 运行 可执行 jar 文件时遇到问题。任何帮助表示赞赏。
$ ./HelloWorld
-bash: ./HelloWorld: cannot execute binary file
$ file HelloWorld
HelloWorld: Zip archive data, at least v2.0 to extract
$ ls -l
total 32
-rwxr-xr-x 1 myMac staff 773 Jan 17 06:55 HelloWorld
-rw-r--r-- 1 myMac staff 427 Jan 17 06:55 HelloWorld.class
-rw-r--r-- 1 myMac staff 120 Jan 17 05:52 HelloWorld.java
-rw-r--r-- 1 myMac staff 304 Jan 17 05:59 makefile
这是我正在使用的 2 个文件。
HelloWorld.java
class HelloWorld{
public static void main(String[] args){
System.out.println("Hello, world!");
}
}
生成文件
HelloWorld: HelloWorld.class
echo Main-class: HelloWorld > Manifest
jar cvfm HelloWorld Manifest HelloWorld.class
rm Manifest
chmod +x HelloWorld
HelloWorld.class: HelloWorld.java
javac -Xlint HelloWorld.java
这个命令:
jar cvfm HelloWorld Manifest HelloWorld.class
创建一个 jar
文件(jar
files are ZIP archives 就像 file HelloWorld
告诉你的那样)。这不是一个 "normal" 可以像 ./HelloWorld
那样 运行 的二进制文件。您需要使用 Java 到 运行 它为您服务:
java -jar HellorWorld
我也建议把上面的代码改成:
jar cvfm HelloWorld.jar Manifest HelloWorld.class
这样就可以清楚那个文件到底是什么了。
顺便说一句,因为 HelloWorld
不是二进制文件,所以您不需要命令 chmod +x HelloWorld
。