我正在编写一个bash脚本,让我从不同的目录运行一个java文件,但我不知道为什么我已编译的java文件不会运行。相关代码:
#!/bin/bash
if [ "$1" == "JavaAdd" -o "$1" == "JavaAddBad" ]
then
echo "Testing $1"
`java ../Source/Java/"$1"`
else
echo "Invalid File"
fi
此脚本位于Script目录下。因此,子目录Script和Source都在同一目录中。我编译的java文件在/ Source / Java
下答案 0 :(得分:3)
java
的参数不是路径或文件名。
这是班级名称。
您可以通过指定类路径来告诉Java在哪里找到它。
java -cp ../somewhere/classes:../../somewhereElse/x.jar com.me.MyClass
然后将在类路径的所有位置查找该类。每个位置都可以是目录或jar文件。
另请注意,您为类路径提供的目录需要放在类包层次结构的根目录中。因此,如果您的班级被称为com.me.MyClass
并且它位于../somewhere/classes/com/me/MyClass.class
的文件中,则您需要包含../somewhere/classes
(不是其任何子目录)。
另请注意,包含类路径不会更改程序的工作目录。根据您启动文件的目录打开文件时,它仍将解析相对路径(与类文件的位置完全无关)。