2

メインメソッドを持つデモクラスを持つシェルスクリプトを作成しました。

を使用してシェルを実行しているときに、正常に./file.sh動作します。

しかし今、私は を使用して 5 分ごとにそのファイルを実行するように cronjob を設定しましたcrontab

しかし、これは私にclassnotfoundException

Exception in thread "main" java.lang.NoClassDefFoundError: com/example/Demo
Caused by: java.lang.ClassNotFoundException: com.example.Demo
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Met

これが私のシェルファイルです。

#!/bin/sh

echo 'Starts'
lib1='HitURL.jar'

CLASSPATH=$lib1
java -cp HitURL.jar:. com.example.Demo http://www.google.com
echo 'Ends'

このエラーを削除するにはどうすればよいですか?

ありがとう。

4

1 に答える 1

4

問題は、そのスクリプトを手動で実行するときにディレクトリから実行するという事実に関係していることにかなりのお金を賭けますHitURL.jar-一方、cronがプロセスを実行するときは、おそらくルートディレクトリを現在のディレクトリとして使用します. HitURL.jarそのため、変数にフルパスを含めるように変更します。次に、次のようにパラメーターlib1でも参照するようにしてください。-cp

#!/bin/sh

echo 'Starts'
lib1='/full/path/to/HitURL.jar'

CLASSPATH=$lib1
java -cp $lib1:. com.example.Demo http://www.google.com
于 2013-04-29T15:13:47.967 に答える