Batch file 在不使用java-jar的情况下从cmd执行runnable.jar文件

Batch file 在不使用java-jar的情况下从cmd执行runnable.jar文件,batch-file,command-line,executable-jar,Batch File,Command Line,Executable Jar,我想只使用.jar文件名从命令行执行.jar文件。 例如。 而不是 java-jar.jar-a-b 我想跑步 -a-b 有可能吗。如果可能怎么办?我不想使用批处理脚本,因为我使用ApacheCommonsCLI进行命令行参数解析 有可能吗 不可能 (好吧……如果您的shell支持别名或shell函数,那么用户可以编写一个。例如alias foo='java-jar foo.jar',但这并不完全相同。) 对于类似的内容,我建议编写一个包装器脚本。如果您使用的平台与POSIX兼容的shell(s

我想只使用.jar文件名从命令行执行.jar文件。 例如。 而不是
java-jar.jar-a-b

我想跑步
-a-b

有可能吗。如果可能怎么办?我不想使用批处理脚本,因为我使用ApacheCommonsCLI进行命令行参数解析

有可能吗

不可能

(好吧……如果您的shell支持别名或shell函数,那么用户可以编写一个。例如
alias foo='java-jar foo.jar'
,但这并不完全相同。)

对于类似的内容,我建议编写一个包装器脚本。如果您使用的平台与POSIX兼容的shell(sh、bash等),那么不难避免弄乱命令行参数;e、 g

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

请注意,“mvn”(您举了一个例子)是作为shell脚本/批处理文件实现的。

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

更新

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

在我看来,这就是为什么我试图以不同的方式回答您的问题

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

myjar.sh-a)


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

java-jar
用于执行jar。。。在像Windows这样的操作系统中,您可以将jar称为runnable,但也就是说,Windows知道它必须在后台调用
java-jar
,为什么?这是最好的办法。允许您在JAR文件中指定主类和所有依赖项,而不是在每个命令行上。我希望将可执行JAR作为独立命令运行,如mvn for maven。然后编写一个包装器脚本。。。就像Linux上的“mvn”或Windows上的“mvn.bat”。既然你用批处理文件标记了它,为什么不写一个呢?
    #!/bin/sh
    java -cp /path/to/foo.jar com.acme.frobnicator.Main "$@"
myjar.sh -a <a> -b <b>
java -jar abc.jar -a <a> -b <b>