Bash 编译 Java 类 和 JAR

Bash compiling Java classes and JARs

我正在尝试编写一个脚本来自动执行一些我经常执行的任务。我的文件的文件夹结构是这样的:

./
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 的正确方法是什么?

您必须将 ~ 保留在引号外,以便 shell 可以扩展它:

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