确保双击不运行jar

时间:2016-01-08 22:22:42

标签: java jar

当我创建一个可运行的jar文件时,它会在执行java -jar Test.jar后工作,但是当我创建一个常规的jar文件并执行该脚本时,黑色命令窗口会打开一秒钟,但会立即关闭。

那么如何制作一个我可以通过java -jar Test.jar运行的jar文件,而不是通过双击它? 我需要确保jar / program只能通过我的"官方"提供了入门批次。

2 个答案:

答案 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)

方法。 然后,运行程序的唯一方法是从命令行输入一些参数(无关紧要)。