我想只使用.jar文件名从命令行执行.jar文件。
对于例如
代替
java -jar <jarname>.jar -a <a> -b <b>
我想跑
<jarname> -a <a> -b <b>
有可能吗?如果可能怎么样?我不想使用批处理脚本,因为我使用apache commons cli来解析命令行参数。
答案 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)
你只是害怕,它会破坏你的命令行参数解析。唯一可能的方法是测试,如果你发现它不起作用,我们可以处理......