Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当使用crontab通过perl调用时,Java程序不会运行_Perl_Cron - Fatal编程技术网

当使用crontab通过perl调用时,Java程序不会运行

当使用crontab通过perl调用时,Java程序不会运行,perl,cron,Perl,Cron,我试图创建一个预定的(通过cron)单个Perl脚本来调用其他几个Perl文件,以完成下面的日常工作。这些文件位于多个位置 Script_A.pl (in directory A) is scheduled to run every day at 3 am. -> calls script_1.pl (in directory B) -> calls script_2.pl (in directory B) -> calls a java program (in di

我试图创建一个预定的(通过cron)单个Perl脚本来调用其他几个Perl文件,以完成下面的日常工作。这些文件位于多个位置

Script_A.pl (in directory A) is scheduled to run every day at 3 am.
-> calls script_1.pl (in directory B)
-> calls script_2.pl (in directory B)
     -> calls a java program (in directory B)
我的问题是,即使cron按预期运行,也就是说,Perl脚本按顺序执行,但java程序没有正常运行。我设法将输出结果写入日志

     Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/xml/tree/XmlDocument
         at InputISBN.main(InputISBN.java:43)
 Caused by: java.lang.ClassNotFoundException: com.sun.xml.tree.XmlDocument
         at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
         ... 1 more    

我在这个论坛和其他论坛上查看了一些相关的票证,并尝试使用-classpath,但没有成功。非常感谢您的帮助。当我手动调用Script_a.pl(./Script_a.pl)

cron作业与您的用户会话不在同一环境中运行时,这可以正常工作。如果您正在进行交互式会话设置,例如
类路径
,您也需要在crontab中设置这些内容。您好@briandfoy谢谢您的评论。当我通过CRON调用Perl脚本时,我可以在CRON本身中传递CLASSPATH(类似的相关内容)吗。Perl正在调用java,我在这里使用了-cp来定义类路径。那是科雷特吗?Tia您可以在crontab中设置每行的环境变量(例如,
CLASSPATH=/home/foo perl myscript.pl
),也可以将它们设置在crontab的顶部,它们会影响所有内容。@Akhland:谢谢您的评论。这真的奏效了。我在crontab的顶部添加了类路径,它的工作原理与预期的一样。cron作业与用户会话的运行环境不同。如果您正在进行交互式会话设置,例如
类路径
,您也需要在crontab中设置这些内容。您好@briandfoy谢谢您的评论。当我通过CRON调用Perl脚本时,我可以在CRON本身中传递CLASSPATH(类似的相关内容)吗。Perl正在调用java,我在这里使用了-cp来定义类路径。那是科雷特吗?Tia您可以在crontab中设置每行的环境变量(例如,
CLASSPATH=/home/foo perl myscript.pl
),也可以将它们设置在crontab的顶部,它们会影响所有内容。@Akhland:谢谢您的评论。这真的奏效了。我在crontab的顶部添加了类路径,它的工作与预期的一样。