显然,如果你创建一个可执行jar,为了运行它你还需要java命令:
java -jar something.jar
但如果我只想让它在没有java命令的情况下运行,那么只需直接从命令行
something.jar
有没有办法在eclipse中导出我的java应用程序才能完成这样的
答案 0 :(得分:3)
在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上添加一个触发器。
我希望这个帮助
答案 1 :(得分:1)
Excelsior JET - http://www.excelsior-usa.com/jet.html - 声称要编译为本机代码并带来自己的运行时支持,因此它不需要现有的JVM。商业产品。
我自己没有尝试过,但是多年来他们花了相当多的精力将JET推广为预编译二进制文件的一个很好的部署方法。
另请注意,如果你有一个可执行/可运行的jar,可以正常使用“java -jar someting.jar”并且你只是想以更方便的方式调用它,这就是程序接受的工作你的命令并启动java命令。
对于Linux,您可以经常添加一个别名,说“某些东西”会扩展为“java -jar something.jar”,而某些命令解释器允许说所有以jars结尾的命令都应该特别执行。具体细节取决于您使用的shell(命令行解释器)。
答案 2 :(得分:1)
您需要的是一个名为“Java Executable Wrapper”的工具。您可以使用它将所有类文件打包到单个可执行包中。
One i推荐是launch4j,您可以从sourceforge launch4j.sourceforge.net下载
Launch4J可用于从Windows环境的jar文件创建独立的可执行文件(.exe)。
答案 3 :(得分:0)
问题是,Java会被JVM解释,因此您至少需要将它与您的应用程序一起发布。
为了更加具体一点,Java可以编译成字节码,因此可以更快地解释它。但是如果没有JVM,Byte-Code就无法运行。这是Java的好处:您不需要重新编译您的应用程序以在Linux或OS X等其他平台上运行,JVM负责这一点(因为它是用本机代码编写的,并为这些平台重新编译)。
有一些编译器可以将你的Java代码转换为像C这样的本地代码,然后可以在没有JVM的情况下执行。但这不是Java背后的想法,而且大多数这些工具都会嘲笑他们的工作。
如果您希望App在没有任何解释器的情况下运行,则需要使用C或C ++等编译语言
答案 4 :(得分:0)
Java程序在JVM上运行,对于第一个问题,我认为没有一个编译器可以很好地完成这项工作。对于第二个问题,因为jar文件本身不是可执行文件,所以目标机器中必须有某种设置,“执行”jar文件而不提供java命令对用户来说是方便的。在Windows上,每个文件扩展名都有一个与之关联的程序,因此.doc文档(通常)Word作为程序关联 - 该设置由Office安装程序设置,java运行时还会在安装时设置.jar文件的设置但是在幕后,java命令将被系统使用。所以对第二个问题的简短回答是:取决于目标机器。