3

在不学习新的编程语言的情况下,我们可以直接使用Java获取.exe(可执行windows文件)软件吗?是否可以将 .jar(Java ARchive)软件转换为 .exe(可执行 Windows 文件)?

这种转换会影响软件的性能吗?

4

7 回答 7

6

Java 的重要一点是它可以在安装了合适的 Java 虚拟机 (JVM) 的任何平台(例如 Windows、Linux 等)上运行。.exe 文件被编译为只能在一个平台上运行。

您认为您想要的是将 .jar 转换为 .exe 以便您可以轻松启动它。我希望你真正想要的只是一种简单的方式来启动一个任何人都可以理解的 Java 应用程序,包括你的父母。

最简单的方法是创建一个启动 Java 应用程序的 Windows 批处理文件。一行脚本,一个新文件,一条新指令给您的用户 - “双击 runme.bat”

有多种方法可以将 .jar 转换为 .exe,但您应该考虑这是否真的是您想要的,如果是,为什么。

注意:只要在清单中指定主类,您就可以在 Windows 中通过双击它来启动 .jar。您可能希望研究 Apache Ant 之类的工具来简化构建 .jar 及其清单。只是一个想法。

编辑:

Windows 中的批处理文件是一个包含命令的简单文本文件。您可以通过在命令提示符(开始 -> 运行 -> cmd)中运行命令来测试这些命令。当您运行批处理文件时,其中的命令一次只提供一个命令提示符。

如何从命令提示符运行 Jar:“java -jar myfile.jar”

如果您创建一个包含“java -jar myfile.jar”(不带引号!)的批处理文件(.bat - 使用记事本或您喜欢的文本编辑器),然后双击它将启动 myfile 清单中指定的主类。罐。不过,myfile.jar 必须与批处理文件位于同一文件夹中。

如果您使用命令“java -jar lib\myfile.jar”(同样,不带引号),那么您的批处理文件将运行 myfile.jar,它需要位于名为 lib 的文件夹中,该文件夹与批处理文件位于同一文件夹中. 当您的应用程序中有一大堆 Jars 并且您不想将它们推到用户面前时,请使用此方法:)

请注意,移动批处理文件会破坏它,除非它使用 jar 文件的绝对路径 - 例如“java -jar C:\dev\myfile.jar”。当然,如果您使用绝对路径,那么移动 Jar 无论如何都会破坏批处理文件:)

另外,请注意,只要在清单中指定主类,您应该能够通过在 Windows 中双击它来运行 Jar 文件。试试看。当然,让你的用户相信他们可以双击它完全是另一回事......

最后一点,如果您使用批处理文件,您的用户将在后台获得一个漂亮的命令提示符窗口,直到您的 Java 应用程序关闭。也就是说,除非您使用“start”启动批处理文件命令。例如“启动 java -jar myfile.jar”。如果您的应用程序配置为登录到 System.out 或 System.err,那么当您的应用程序写入其中任何一个流时,您仍然会收到命令提示符。

最后的最后一点,在 Linux 世界中,批处理文件的等价物是 shell 脚本。

于 2009-07-28T08:44:42.337 回答
4

您可以使用 Runtime.exec() 或 ProcessBuilder 从 java 启动 .exe。

您可以使用http://launch4j.sourceforge.net/制作一个 .exe 启动器

于 2009-07-28T08:31:19.227 回答
4

是的,有可能:http ://www.excelsior-usa.com/articles/java-to-exe.html

于 2009-07-28T08:33:51.470 回答
2

我不确定这是否是一个合适的答案,因为我不使用 Java,但是您能否不使用指向 Java 运行时的快捷方式文件并将 jar 作为参数传递,这个

我意识到这不是唯一的方法,也可能不是最好的方法,但对我来说,如果你正在寻找一种方便的方式来启动 Java 应用程序,它比创建批处理或转换为 exe 文件要好一些

于 2009-07-28T09:07:26.970 回答
2

最简单的方法是编写将启动应用程序的 Windows 批处理 (.bat) 文件。

于 2009-07-28T09:12:45.900 回答
1

很长一段时间以来,我一直在使用 java 包装器来制作 exe 文件:

JStart32 它只是 *.jar 文件的包装器。

但是问问你自己:一个exe不会扼杀javas平台独立性的目的吗?

于 2009-07-28T08:32:55.683 回答
1

查看jsmooth(免费)和exe4j,您可能想阅读让您的 swing 应用程序原生化

于 2009-07-28T08:36:34.053 回答