当我创建一个可运行的jar文件时,它会在执行java -jar Test.jar
后工作,但是当我创建一个常规的jar文件并执行该脚本时,黑色命令窗口会打开一秒钟,但会立即关闭。
那么如何制作一个我可以通过java -jar Test.jar
运行的jar文件,而不是通过双击它?
我需要确保jar / program只能通过我的"官方"提供了入门批次。
答案 0 :(得分:1)
您基本上要做的是通过双击来阻止您的.jar文件被调用。
双击jar并使用java -jar
运行它同样难以区分/检测。但是,由于您已经使用批处理来调用程序,因此可以执行以下操作:
@echo off
java -jar foo.jar OK!
然后,您只需检查启动程序时是否发出此信号:
public static void main(String[] args) {
if (args.length > 0 && args[0].equals("OK!")) {
System.out.println("Everything fine");
} else {
System.exit(0);
}
}
这将确保您可以检测程序的启动方式。也许最好给用户提供在未从批处理中调用时退出程序的原因。
请注意,这不会保持"恶意"用户可以创建自己的批次,因为您无法隐藏它们的信号。
另一种方法是创建一个常规jar并指定通常为可运行jar创建的清单所做的信息:
@echo off
java -cp foo.jar org.your.package.MainClass
但我更喜欢第一种方法,因为我认为它更容易,更容易用户,因为你可以向他们提供信息。
答案 1 :(得分:0)
我认为最简单的方法是放
if (args.length == 0)
System.exit(0);
在
的开头main(String[] args)
方法。 然后,运行程序的唯一方法是从命令行输入一些参数(无关紧要)。