如何为.jar命令行脚本创建别名?

7

我有一个可以通过命令行运行的jar文件,如下所示:

# In Terminal.app
java -jar fop.jar /path/to/infile.fo /path/to/outfile.pdf

目前,为了使这个工作生效,我需要导航到包含 fop.jar 的文件夹。这并不理想,所以我尝试添加以下 别名bash_profile...

# In bash_profile
alias fop="java -jar /path/to/a/far/away/folder/fop-2.1/build/fop.jar"

希望我可以从桌面或其他地方执行这个脚本:

# In Terminal
fop ~/Desktop/simple.fo ~/Desktop/simple.pdf 

很遗憾,它没有起作用:

# Error message
Unable to start FOP:
java.lang.RuntimeException: fop.jar not found in directory: /my/pwd (or below)
    at org.apache.fop.cli.Main.getJARList(Main.java:70)
    at org.apache.fop.cli.Main.startFOPWithDynamicClasspath(Main.java:130)
    at org.apache.fop.cli.Main.main(Main.java:219)

有人能帮忙吗?


如果您在包含fop.jar的实际文件夹中运行别名命令,它是否有效? - Michael Markidis
@Michael:是的。 - Paul Patterson
1个回答

1
只要使用javafop.jar的真实路径,别名或函数都可以正常工作:
$ which java
/usr/bin/java

如果您想创建一个函数(这样可以让您更改选项、参数、参数等),您可以将以下内容添加到~/.bash_profile中:
# fop: run java -jar with input and output files
fop () { /usr/bin/java -jar /path/to/fop.jar "$1" "$2" ; }

关键是告诉函数或别名你的java可执行文件和fop.jar路径。另一件可能有助于解决问题的事情是创建一个符号链接到一个方便的地方,然后你可以根据需要轻松引用它。
ln -s /path/to/fop.jar /path/to/symlink

所以通过这样做,你的命令实际上就变成了:
/usr/bin/java -jar /path/to/symlink infile outfile

Bash中何时使用别名、脚本和函数?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接