【问题标题】:How do I create an alias for a .jar command-line script?如何为 .jar 命令行脚本创建别名?
【发布时间】:2016-10-19 09:18:17
【问题描述】:

我有一个jar 文件,可以像这样从命令行运行:

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

目前,我需要导航到包含 fop.jar 的文件夹。这并不理想,所以我尝试将以下 alias 添加到 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 的实际文件夹中运行 alias 命令,它会起作用吗?
  • @Michael:确实如此。

标签: java macos command-line apache-fop .bash-profile


【解决方案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 的路径。可能有助于解决问题的另一件事是在方便的地方创建指向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?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 2015-12-22
    • 2020-09-06
    • 2014-09-24
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多