【问题标题】:Crontab java.lang.ClassNotFoundException with a jar file带有 jar 文件的 Crontab java.lang.ClassNotFoundException
【发布时间】:2016-11-01 00:19:12
【问题描述】:
 #!/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类文件在/Users/sunny/CronTest/out/production/CronTest/sample/Main.class

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

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

【问题讨论】:

  • 尝试将两个类路径合并为一个,然后将其传递给 java
  • 看起来您在 $CLASSPATH 之后缺少一个“:”。应该是$CLASSPATH:".:/Users/sunny/Downloads/sqlite-jdbc-3.8.11.2.jar"
  • 嗨 @Frank 和 Sanjeev 我尝试了这两种方法,但仍然无法正常工作。
  • 抱歉,目前我没有 Unix 系统可以尝试。如果在第 3 行构建完整的类路径会怎样? CLASSPATH=/Users/sunny/CronTest/out/production/CronTest:.:/Users/sunny/Downloads/sqlite-jdbc-3.8.11.2.jar,然后在您的通话中只使用-cp $CLASSPATH
  • 不能在 shell 脚本中工作。但是从根目录在终端中完美运行。

标签: java sqlite shell jar crontab


【解决方案1】:

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

请尝试使用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

【讨论】:

    猜你喜欢
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 2017-05-30
    • 2011-10-17
    • 2013-10-22
    • 1970-01-01
    • 2014-11-20
    • 2012-05-14
    相关资源
    最近更新 更多