创建100%独立的可执行jar,该jar不';不需要java命令
显然,如果您创建了一个可执行jar,为了运行它,您仍然需要java命令:创建100%独立的可执行jar,该jar不';不需要java命令,java,eclipse,jar,export,executable,Java,Eclipse,Jar,Export,Executable,显然,如果您创建了一个可执行jar,为了运行它,您仍然需要java命令: java -jar something.jar 但是,如果我只是想让它在没有java命令的情况下运行,那么直接从命令行运行该怎么办 something.jar 有没有一种方法可以在eclipse中导出我的java应用程序来完成这样的任务呢?问题是,java是由JVM解释的,所以你至少需要在应用程序中附带它 更具体地说,Java被编译成字节码,这样可以更快地解释它。但是没有JVM,字节码就无法运行。这是Java好的一面
java -jar something.jar
但是,如果我只是想让它在没有java命令的情况下运行,那么直接从命令行运行该怎么办
something.jar
有没有一种方法可以在eclipse中导出我的java应用程序来完成这样的任务呢?问题是,java是由JVM解释的,所以你至少需要在应用程序中附带它 更具体地说,Java被编译成字节码,这样可以更快地解释它。但是没有JVM,字节码就无法运行。这是Java好的一面:你不需要重新编译你的应用程序来运行在其他平台上,比如Linux或OSX,JVM会处理这一点(因为它是用本机代码编写的,并且是为这些平台重新编译的) 有一些编译器可以将Java代码转换为像C这样的本机代码,然后在没有JVM的情况下执行。但这并不是Java背后的想法,这些工具中的大多数都做得很差劲
如果你想让你的应用程序在没有任何解释器的情况下运行,你需要使用一种编译过的语言,比如C或C++Java程序在JVM上运行,对于第一个问题,我认为没有一种编译器可以很好地完成这项工作。对于第二个问题,由于jar文件本身不是可执行文件,因此目标机器中必须有某种设置,“执行”jar文件而不提供java命令对用户来说是一件方便的事情。在Windows上,每个文件扩展名都有一个与之关联的程序,因此.doc文档(通常)将Word作为关联的程序-该设置由office安装程序设置,java运行时在安装时也会设置.jar文件的设置,但在幕后,系统将使用java命令。因此,第二个问题的简短答案是:取决于目标机器。在Unix系统上,您可以将jar文件附加到可执行脚本的末尾 在Windows上,必须创建批处理文件 例如,在Unix中:
$cat HelloWorld.java
public class HelloWorld {
public static void main( String ... args ) {
System.out.println("Hola mundo!");
}
}
$cat M.mf
Main-Class: HelloWorld
$cat hello
#!/bin/sh
exec java -jar $0 "$@"
$javac HelloWorld.java
$jar -cmf M.mf hello.jar HelloWorld.class
$cat hello.jar >> hello
$chmod +x hello
$./hello
Hola mundo!
在windows中,您必须创建一个批处理文件,如:
::hello.cmd
javaw -jar hello.jar
这也有同样的效果
在Windows和OSX上,您可以双击jar来运行它,我很确定您也可以在Linux上添加触发器
我希望这有助于ExcelsiorJet--声称编译为本机代码并提供自己的运行时支持,因此它不需要现有的JVM。商业产品
我自己并没有尝试过,但多年来,他们花了不少精力将JET作为预编译二进制文件的一种优秀部署方法推向市场
另外请注意,如果您有一个可执行/可运行的jar,它可以与“java-jar someting.jar”配合使用,并且您只希望能够以更方便的方式调用它,那么这就是程序接受您的命令并启动java命令的工作
对于Linux,您可以经常添加一个别名,表示“something”扩展为“java-jarsomething.jar”,并且一些命令解释器允许表示所有以jar结尾的命令都应该特别执行。具体细节取决于您使用的是哪个shell(命令行解释器)。您需要的是一个名为“Java可执行文件包装器”的工具。您可以使用它将所有类文件打包到单个可执行文件包中 我推荐的是launch4j,您可以从sourceforge下载
Launch4J可用于从适用于windows环境的jar文件创建独立的可执行文件(.exe)。不可以。jar文件不是可执行文件,而是可执行(编译)类和资源的存档文件。