2015-02-10 3 views
1

Я пытаюсь написать сценарий, который будет автоматизировать несколько задач, которые я делаю регулярно. Структура папок моих файлов, как так:Bash компиляция классов Java и JAR

./ 
sampleScript.sh 
src/SampleProgram.java 

В дополнение к этому, моя программа Java опирается на ojdbc6.jar файл, который находится в ~/sampleFolder/lib.

я пытался скомпилировать и запустить программу Java в моем сценарии следующим образом:

javac -cp "$CLASSPATH:~/sampleFolder/lib/ojdbc6.jar:./src" src/SampleProgram.java 
java -cp "$CLASSPATH:~/sampleFolder/lib/ojdbc6.jar:./src" SampleProgram 

К сожалению, это не работает. Кажется, что он не работает на этапе моей программы, который проверяет зависимость ojdbc6.jar. Каким образом можно назначить мой -cp на основе этой структуры папок?

ответ

5

Вы должны держать ~ вне цитаты, так что оболочка может расширить его:

javac -cp "$CLASSPATH":~/sampleFolder/lib/ojdbc6.jar:./src src/SampleProgram.java 
java -cp "$CLASSPATH":~/sampleFolder/lib/ojdbc6.jar:./src SampleProgram 
+0

Я попробовал ваше предложение, но моя программа по-прежнему кажется, терпит неудачу на этом шаге: 'попробовать { Class.forName (" оракул .jdbc.driver.OracleDriver "); } catch (ClassNotFoundException e) { e.printStackTrace(); } 'с сообщением' java.lang.ClassNotFoundException oracle.jdbc.driver.OracleDriver' – raphnguyen

+0

Это должно сработать. Вы не ошиблись в 'javac' сейчас? Вы также можете попробовать дать полный путь к файлу jar, например: 'java -cp" $ CLASSPATH ":/home/user/sampleFolder/lib/ojdbc6.jar: ./ src SampleProgram' – anubhava

+1

Я бы предложил' $ HOME' над ' ~ 'по ряду причин, в том числе из-за того, что он расширяется в кавычках. –