我有一个将rgb名称转换为十六进制代码的Java CLI脚本(例如144 132 146变为#908492)。但是,我希望能够从任何终端运行它。我把bash脚本在同一文件夹,以便它可以运行该文件:bash:从路径运行时在当前目录中运行另一个程序
的bash脚本是很简单的,只是:
#!/bin/bash
java rgb2hexConv $1 $2 $3
然而,当我通过PATH运行代码,我得到的错误没有找到与rgb2hexConv相关的文件。
图:
/
/home/
/home/me/
/home/me/someRandomDir/ (running from here does not work)
/home/me/utils/ (in path) (running from here works)
- rgb2hex (bash script)
- rgb2hexConv.class (java program)
我的猜测是,它在寻找rgb2hexConv在/ home/ME/someRandomDir /,而不是到/ home/ME/utils的/。有无论如何获得bash脚本的目录?
编辑:改变脚本使用./rgb2hexConv给出以下:
Exception in thread "main" java.lang.NoClassDefFoundError: //rgb2hexConv
Caused by: java.lang.ClassNotFoundException: ..rgb2hexConv
// long stack trace removed
Could not find the main class: ./rgb2hexConv. Program will exit.
(在第一行的末尾的位是不是一个评论,但实际输出)
编辑2 :在使用$ 0以下输出的尝试后,收到
异常在线程 “主要” java.lang.NoClassDefFoundError:/首页/我/ utils的/ rgb2hex/rgb2hexConv 产生的原因:抛出java.lang.ClassNotFoundException:。家里.me.utils.rgb2hex.rgb2hexConv //长栈跟踪 找不到主类:/ home/me/utils/rgb2hex/rgb2hexConv。程序将会退出。这个
两件事情:
- $ 0包含文件名和目录
- 的
java
命令似乎“/”与被取代“”。
$ 0包含完整的文件名以及目录。 – Macha 2009-07-28 17:25:49
感谢您指出。我已纠正它。 – 2009-07-28 17:32:40
我试过了,它没有工作。所以我查了一下java命令的文档,它只适用于当前目录。如果你想使用不同的目录,你必须使用-cp参数来告诉它。 – Macha 2009-07-28 17:35:12