0

我有一个简单的 Java 程序(我们称之为 MyProgram.java),它执行一些 I/O、重命名一些图像、删除目录等。我一直在浏览 S/O,寻找一种简单的方法来运行命令提示符下的 Java 程序的主要方法。我已将源代码编译到 jar 中,并尝试使用 Jar2EXE 向导,但是在从 IDE 运行我的代码时,我不断收到意外的编译错误。

是否有人拥有他们已经成功使用的 Jar -> EXE 转换器解决方案,或者可以指导我如何从批处理文件运行我的程序?

4

4 回答 4

1

[..]或者可以指导我如何从批处理文件运行我的程序?

最简单的方法是执行:

java -jar YOUR_JAR_FILE.jar

在你的批处理文件中。但是,这需要一个清单文件存在于您的 jar 文件中,该文件指定要使用的 Main 类和它所依赖的 jar 文件。如果您不想使用清单文件,您可以手动指定这些内容。如果您不依赖外部 jar 文件,您可以执行:

java -cp YOUR_JAR_FILE.jar some.package.Main

这将执行public static main(String[] args)YOUR_JAR_FILE.jar 中包含的 some.package.Main 类中的方法。

如果您依赖其他 jar 文件(在您的情况下是 IOUtils/FileUtils),请同时指定这些 jar 文件:

java -cp YOUR_JAR_FILE.jar:library1.jar:library2.jar some.package.Main

(在你的情况下 library1 和 library2 分别是 IOUtils 和 FileUtils )。

您可以指定任意数量的 jar 文件,也可以使用通配符*.jar来包含当前(或另一个)目录中的所有文件。但是请注意,您不能写*x*.jar之类的。只接受*.jar(或some/directory/*.jar)。

在 90% 的情况下,jar 文件的顺序没有任何区别。但是有时它确实会有所不同:如果从类路径加载资源(可以是类或像配置文件一样简单的东西),则会按照您指定的顺序搜索 jar 文件。如果一个资源存在于多个 jar 文件中,则只会使用找到的第一个。

于 2013-11-05T14:46:50.797 回答
0

您可以考虑使用 install4j。

于 2013-11-05T14:45:07.713 回答
0

如果你想使用批处理文件,你可以这样写:

java -jar sources.jar 

如果您的代码超过 2 个static void main(String[] args),则需要显式点击该方法:

java -jar sources.jar classes.package.Main 

目录结构:

-\project\
-\project\run.bat
-\project\sources.jar
于 2013-11-05T14:48:36.230 回答
0

看看JSmooth。它将您的 JAR 包装为可执行文件,并提供用于检测和处理 JVM 缺失的选项。我在一个简单的应用程序上使用过它,而且很轻松。

奖励:它可以作为便携式应用程序使用,无需安装。

于 2013-11-05T15:08:32.540 回答