Я пытаюсь написать сценарий, который будет автоматизировать несколько задач, которые я делаю регулярно. Структура папок моих файлов выглядит так:
./
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
на основе этой структуры папок?
Вы должны оставить ~
вне цитаты, чтобы оболочка могла ее расширять:
javac -cp "$CLASSPATH":~/sampleFolder/lib/ojdbc6.jar:./src src/SampleProgram.java
java -cp "$CLASSPATH":~/sampleFolder/lib/ojdbc6.jar:./src SampleProgram
try { Class.forName("oracle.jdbc.driver.OracleDriver"); } catch (ClassNotFoundException e) { e.printStackTrace(); }
с сообщениемjava.lang.ClassNotFoundException oracle.jdbc.driver.OracleDriver
javac
сейчас? Вы также можете попробовать указать полный путь к файлу jar, например:java -cp "$CLASSPATH":/home/user/sampleFolder/lib/ojdbc6.jar:./src SampleProgram