2014-10-03 5 views
0

Я пишу скрипт bash, который позволит мне запустить java-файл из другого каталога, но я не уверен, почему мой уже скомпилированный Java-файл не запускается. Соответствующий код:Почему не работает мой java-файл (bash)

#!/bin/bash 

if [ "$1" == "JavaAdd" -o "$1" == "JavaAddBad" ] 
then 
    echo "Testing $1" 
    `java ../Source/Java/"$1"` 

else 
    echo "Invalid File" 
fi 

этот скрипт находится под каталогом скрипта. Таким образом, оба подкаталога Script и Source находятся в одном каталоге. Мой скомпилированный java-файл находится в разделе/​​Source/Java

+2

Вы должны «man java». –

ответ

3

Параметр java не является именем пути или файла.

Это имя класса.

Вы можете сказать Java, где его найти, указав путь classpath.

java -cp ../somewhere/classes:../../somewhereElse/x.jar com.me.MyClass 

Класс будет затем искать во всех местах на пути к классам. Каждое местоположение может быть либо каталогом, либо файлом jar.

Также обратите внимание, что каталог, который вы передаете пути classpath, должен быть помещен в корень иерархии пакетов классов. Поэтому, если ваш класс называется com.me.MyClass, и он находится в файле по адресу ../somewhere/classes/com/me/MyClass.class, вам необходимо включить ../somewhere/classes (ни один из его подкаталогов).

Также обратите внимание, что включение пути класса не изменяет рабочий каталог программы. Он будет по-прежнему решать относительные пути при открытии файлов на основе каталога, в котором вы его запустили (полностью не связанного с тем, где находятся файлы классов).

+0

Я знаю, что если я сделаю java JavaAdd , программа запустится, когда я буду в том же каталоге, что и java-файл. Так почему я не могу запустить его, когда я в другом каталоге? – guevarak12

+0

Как это будет искать ваши классы, если вы не скажете, где они находятся? По умолчанию он отображается только в текущем каталоге. – Thilo

+0

Как узнать, где мой путь к классу? – guevarak12

Смежные вопросы