Java 双击jar以确保它没有运行

Java 双击jar以确保它没有运行,java,jar,Java,Jar,当我创建一个可运行的jar文件时,它会在执行java-jar Test.jar后工作,但是当我创建一个常规jar文件并执行脚本时,黑色的命令窗口会打开一秒钟,但会立即关闭 那么,如何创建一个jar文件,通过java-jartest.jar运行,而不是双击它? 我需要确保jar/程序只通过我“正式”提供的初学者批处理进行调用。您基本上要做的是通过双击来防止调用.jar文件 因为双击jar并使用java-jar运行它是一样的,所以很难区分/检测。但是,由于您已经在使用批处理调用您的程序,您可以执行以

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

那么,如何创建一个jar文件,通过
java-jartest.jar
运行,而不是双击它?
我需要确保jar/程序只通过我“正式”提供的初学者批处理进行调用。

您基本上要做的是通过双击来防止调用.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

但是我更喜欢第一种方法,因为我认为它更容易,也更容易使用,因为你可以向他们提供信息。

< P>我认为最简单的方法是把

if (args.length == 0)
    System.exit(0);
一开始

main(String[] args)
方法。
然后运行程序的唯一方法是从命令行输入一些参数(不管是什么参数)。

因为它不可运行。你有问题吗?你自己说的-
runnable
jar-可以运行,而不是runnable-不能。简单到that@Marged我不想被双重管理clicking@Marged更多细节please@LoveJavaTwo这不是很多反对票。有些人在5分钟内吸引了10多张反对票;-)我认为问题在于你只提供了90%的信息。你知道你为什么要这么做,但你没有向我们透露。