2

我编写了一个 shell 脚本,其中有一个 Demo 类,该类具有 main 方法。

现在,当我使用./file.sh.It 运行我的 shell 时,它工作正常。

但是现在我已经配置了一个 cronjob 来每 5 分钟使用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.jarlib1变量中包含完整路径 - 然后确保您还在-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 回答