带有 jar 文件的 Crontab java.lang.ClassNotFoundException

Crontab java.lang.ClassNotFoundException with a jar file

 #!/bin/bash 
 JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk
 CLASSPATH=/Users/sunny/CronTest/out/production/CronTest 
 $JAVA_HOME/Contents/Home/bin/java -cp $CLASSPATH ".:/Users/sunny/Downloads/sqlite-jdbc-3.8.11.2.jar" sample.Main 
 exit 0

Sqlite jar 文件在 /Users/sunny/Downloads/sqlite-jdbc-3.8.11.2.jar

已编译 java class 文件在 /Users/sunny/CronTest/out/production/CronTest/sample/Main.class

并且我已将 cron 作业设置为每 1 分钟安排一次。 Java class 正在执行,但我正在执行 java.lang.ClassNotFoundException: org.sqlite.JDBC
脚本中的相同命令在终端中运行。

我的问题是如何正确添加 jar 文件以从 shell 脚本执行。

您的 $CLASS PATH".:/Users/sunny/Downloads/sqlite-jdbc-3.8.11.2.jar" 之间似乎有一个 space,并且缺少一个冒号 (:)。

请尝试使用 export 进行以下操作:

export CLASSPATH=.:/Users/sunny/CronTest/out/production/CronTest:/Users/sunny/Downloads/sqlite-jdbc-3.8.11.2.jar

并使用 -cp $CLASSPATH 调用 java 命令。

如果还是不行,请直接用-cp试试:

$JAVA_HOME/Contents/Home/bin/java -cp ".:/Users/sunny/CronTest/out/production/CronTest:/Users/sunny/Downloads/sqlite-jdbc-3.8.11.2.jar" sample.Main