我有一个简单的Java程序(让我们称之为MyProgram.java)执行一些I / O,重命名一些图像,删除目录等。我一直在浏览S / O寻找一种简单的方法从命令提示符运行Java程序的main方法。我已经将源代码编译成一个jar,并尝试使用Jar2EXE向导,但是我一直遇到一个意外的编译错误,这是我从IDE运行代码时没有得到的。
是否有人有一个Jar - > EXE转换器解决方案他们已成功或可以指导我如何从批处理文件运行我的程序?
答案 0 :(得分:1)
[..]或者可以告诉我如何从批处理文件中运行我的程序?
最简单的方法是执行:
java -jar YOUR_JAR_FILE.jar
在批处理文件中。但是,这需要一个清单文件存在于您的jar文件中,该文件指定要使用的Main类和它依赖的jar文件。如果您不想使用清单文件,可以手动指定这些内容。如果您不依赖外部jar文件,则可以执行:
java -cp YOUR_JAR_FILE.jar some.package.Main
这将执行YOUR_JAR_FILE.jar中包含的some.package.Main类中的public static main(String[] args)
方法。
如果您依赖其他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文件中,则只会使用找到的第一个资源。
答案 1 :(得分:0)
您可以考虑使用install4j。
答案 2 :(得分: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
答案 3 :(得分:0)
看看JSmooth。它将您的JAR包装为可执行文件,并提供检测和处理缺少JVM的选项。我在一个简单的应用程序上使用它,它是无痛的。
奖励:它可作为便携式应用程序使用,无需安装。