编程语言
首页 > 编程语言> > java – 如何为.jar命令行脚本创建别名?

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

作者:互联网

我有一个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)

有人可以帮忙吗?

解决方法:

只要使用java和fop.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的路径.另一个可能有助于解决问题的方法是在方便的地方为fop.jar创建一个符号链接,然后您可以根据需要轻松地引用它.

ln -s /path/to/fop.jar /path/to/symlink

所以通过这样做你的命令基本上会变成:

/usr/bin/java -jar /path/to/symlink infile outfile

In Bash, when to alias, when to script, and when to write a function?

标签:java,command-line,macos,fop,bash-profile
来源: https://codeday.me/bug/20190706/1394999.html