从cmd执行可运行的.jar文件而不使用java -jar

时间:2018-02-06 09:43:26

标签: batch-file command-line executable-jar

我想只使用.jar文件名从命令行执行.jar文件。 对于例如 代替 java -jar <jarname>.jar -a <a> -b <b>

我想跑 <jarname> -a <a> -b <b>

有可能吗?如果可能怎么样?我不想使用批处理脚本,因为我使用apache commons cli来解析命令行参数。

3 个答案:

答案 0 :(得分:1)

  

是否可能。

没有。这不可能。

(好吧......如果你的shell支持别名或shell函数,那么用户可以写一个。例如alias foo='java -jar foo.jar'但是那不是真的相同。)

对于这样的事情,我建议写一个包装脚本。如果您使用的是具有POSIX兼容shell(sh,bash等)的平台,那么避免破坏命令行参数并不困难; e.g。

    #!/bin/sh
    java -jar /path/to/foo.jar "$@"

    #!/bin/sh
    java -cp /path/to/foo.jar com.acme.frobnicator.Main "$@"

对于记录,“mvn”(您作为示例引用)是作为shell脚本/批处理文件实现的。

答案 1 :(得分:1)

你做不到。 你可以做的是编写一个shell脚本来执行你不想做的命令,或者生成一个可执行的包装器。在这两种情况下,解决方案都依赖于操作系统。在Windows上,有launch4j,在MacOS上,您可以创建一个应用程序(这是一个具有特定结构的文件夹)。

更新

实际上,在MacOS上创建应用程序不是在命令行中使用的解决方案。

答案 2 :(得分:0)

在我看来,这似乎是XY problem,这就是为什么我试图以不同的方式回答你的问题......

假设你有myjar.sh脚本,它将“转换”

myjar.sh -a <a> -b <b>

java -jar abc.jar -a <a> -b <b>

(这是可行的,你可以看到它是Stephen Cs answer

你只是害怕,它会破坏你的命令行参数解析。唯一可能的方法是测试,如果你发现它不起作用,我们可以处理......