我想在hpc中提交一份工作,并且该工作正在运行一个java应用程序。 我编辑pbs_script文件如下: #/ bin / sh的 #PBS -q serial #PBS -l nodes = 1:ppn = 4 模块加载java-jdk / 1.7.0-17 java myjavapp
我提交了这份工作 $ qsub pbs_script 但是作业返回错误:无法找到或加载主类myjava。但我使用相同的命令在命令行下运行java程序。有什么问题?
答案 0 :(得分:0)
这样的问题几乎总是在作业执行环境与在命令行上执行作业的环境之间存在差异。要跟踪它,通常只需要检查群集中所有节点上的所有节点是否都可用,并且配置环境以便运行该作业的shell将找到您要查找的内容。
答案 1 :(得分:0)
通常这是因为找不到类文件。在PBS中,提交脚本从用户的主目录开始执行,而不是从您提交作业的位置开始执行。包含以下行通常很有用:
cd $PBS_O_WORKDIR
该命令将执行节点上的目录更改为提交作业的目录。因此,如果您能够从提交的目录(发布java myjavapp
)运行qsub
,那么$PBS_O_WORKDIR
行应该有效。
您的最终提交文件如下所示:
#/bin/sh
#PBS -q serial
#PBS -l nodes=1:ppn=4
module load java-jdk/1.7.0-17
cd $PBS_O_WORKDIR
java myjavapp
答案 2 :(得分:0)
我们今天面临同样的问题。 我们可以在主节点和节点上运行java脚本,但是当我们通过PBS提交脚本时,它会失败。错误消息与您的错误消息相同。 我们通过为java程序提供类路径来解决问题。
java -classpath myjava
然后,qsub提交的java脚本可以在服务器的任何节点上运行。 :)
博