我已经在我的HPC群集中安装了一个生物信息学工具Picard 2.20,以便对我的基因组对齐文件运行一些指标。Picard 2.20需要JDK1.8,而我们的集群有1.6,所以我在集群的主目录中安装了JDK 1.8,并为PATH和LD_LIBRARY设置了环境变量,以使其正常工作。我检查了jdk_1.8和Picard是否正确安装,因为它们在调用必要的命令时显示了自定义的-help页面。实际上,当我在我的输入文件所在的目录中运行它时,它们运行正常,但是如果我想通过shell脚本和qsub运行它,它就会得到java错误。
这是可行的
java -Xmx2g -jar /home/vdas/tools/picard-tools-2.2.0/picard.jar AddOrReplaceReadGroups I=Aligned.out.sam O=rg_added_sorted.bam SO=coordinate RGID=S_13_O1_122_S12919 RGLB=PairedEnd RGPL=Illumina RGPU=C7MC6ACXX RGSM=S_13_O1_122_S12919但这不是
#!/bin/sh
#
#$ -N picard_run
#$ -cwd
#$ -e err_picard_run.log
#$ -o out_picard_run.log
#$ -S /bin/sh
#$ -M abc.def@xyz.com
#$ -m bea
#$ -l h_vmem=40G
samfile=/data/GT/OvaCa_project/RNA-Seq/STAR_run/2pass
#cd $samfile
java -Xmx2g -jar /home/vdas/tools/picard-tools-2.2.0/picard.jar AddOrReplaceReadGroups I=$samfile/Aligned.out.sam O=$samfile/rg_added_sorted.bam SO=coordinate RGID=S_13_O1_122_S12919 RGLB=PairedEnd RGPL=Illumina RGPU=C7MC6ACXX RGSM=S_13_O1_122_S12919
echo "done"错误
Exception in thread "main" java.lang.UnsupportedClassVersionError: picard/cmdline/PicardCommandLine : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
Could not find the main class: picard.cmdline.PicardCommandLine. Program will exit.
Exception in thread "main" java.lang.UnsupportedClassVersionError: picard/cmdline/PicardCommandLine : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
Could not find the main class: picard.cmdline.PicardCommandLine. Program will exit.怎么做呢?我遗漏了什么?是不是跟类路径有关?
发布于 2016-10-27 03:45:17
关键是在.bashrc或SGE qsub shell脚本中将$JAVA_HOME/bin设置在$PATH之前,如下所示:
export JAVA_HOME=/home/vdas/tools/jdk1.8.0_77
export PATH=$JAVA_HOME/bin:$PATH这将首先执行正确版本的jdk1.8.0_77。
发布于 2016-04-07 21:38:49
检查您正在使用的java的版本和安装,并将JAVA_HOME变量设置为您的java8安装。
我建议你在脚本中这样启动你的java程序:
#!/bin/sh
#
#$ -N picard_run
#$ -cwd
#$ -e err_picard_run.log
#$ -o out_picard_run.log
#$ -S /bin/sh
#$ -M abc.def@xyz.com
#$ -m bea
#$ -l h_vmem=40G
samfile=/data/GT/OvaCa_project/RNA-Seq/STAR_run/2pass
#cd $samfile
c=$(java -Xmx2g -jar /home/vdas/tools/picard-tools-2.2.0/picard.jar AddOrReplaceReadGroups I=$samfile/Aligned.out.sam O=$samfile/rg_added_sorted.bam SO=coordinate RGID=S_13_O1_122_S12919 RGLB=PairedEnd RGPL=Illumina RGPU=C7MC6ACXX RGSM=S_13_O1_122_S12919)
echo "done"https://stackoverflow.com/questions/36477754
复制相似问题