簡體   English   中英

如何為.jar命令行腳本創建別名?

[英]How do I create an alias for a .jar command-line script?

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

有人可以幫忙嗎?

只要使用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的路徑。 另一個可能有助於解決問題的方法是在方便的地方為fop.jar創建一個符號鏈接,然后您可以根據需要輕松地引用它。

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

所以通過這樣做你的命令基本上會變成:

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

在Bash中,何時為別名,何時編寫腳本以及何時編寫函數?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM