2016-06-29 10 views
0
#!/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-Datei in /Users/sunny/Downloads/sqlite-jdbc-3.8.11.2.jarCrontab java.lang.ClassNotFoundException mit einer JAR-Datei

kompilierten Java-Klassen-Datei ist in /Users/sunny/CronTest/out/production/CronTest/sample/Main.class

Und ich habe den Cron-Job gesetzt sein Zeitplan jeden 1 Minute. Java-Klasse wird ausgeführt, aber ich bekomme java.lang.ClassNotFoundException: org.sqlite.JDBC
Derselbe Befehl, der im Skript ist, arbeitet im Terminal.

Meine Frage ist, wie kann ich JAR-Datei ordnungsgemäß aus Shell-Skript ausgeführt werden.

+0

versuchen, beide CLASSPATHs zu einem einzigen kombiniert und dann auf Java passieren – Sanjeev

+0

Sieht aus wie Sie fehlen „:“ nach $ CLASSPATH. Sollte '$ CLASSPATH:" sein.:/Users/sunny/Downloads/sqlite-jdbc-3.8.11.2.jar "' – Frank

+0

Hallo @Frank und Sanjeev Ich versuchte beide Möglichkeiten, aber immer noch nicht funktioniert. – Sunny

Antwort

0

Scheint, es gibt einen Platz zwischen $CLASS PATH und ".:/Users/sunny/Downloads/sqlite-jdbc-3.8.11.2.jar" und fehlt ein Doppelpunkt (:).

Bitte versuchen Sie es mit folgenden mit export:

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

und Java-Befehl mit -cp $CLASSPATH nennen.

Wenn es immer noch nicht funktioniert, versuchen Sie es mit -cp direkt:

$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