程序只适用于一个终端

时间:2016-02-10 15:35:37

标签: java terminal

我在两个不同的文件夹和两个不同的终端中执行此命令:

for i in *_RG.bam; do k=`echo $i | sed  "s/.bam/_Reordered.bam/"` java -jar /home/Programas/picard-tools-1.107/ReorderSam.jar R=/local/Referencias/Homo_sapiens/UCSC/hg19/Sequence/Bowtie2Index/genome.fa  I= $i O= "$k" ; done

在一个终端中它可以正常工作,但在另一个终端上,代码根本不起作用。它给出了下一个错误。

Runtime.totalMemory()=1517289472
To get help, see http://picard.sourceforge.net/index.shtml#GettingHelp
Exception in thread "main" net.sf.samtools.util.RuntimeIOException: File not found: 
    at net.sf.samtools.util.BinaryCodec.<init>(BinaryCodec.java:102)
    at net.sf.samtools.util.BlockCompressedOutputStream.<init>(BlockCompressedOutputStream.java:127)
    at net.sf.samtools.BAMFileWriter.<init>(BAMFileWriter.java:50)
    at net.sf.samtools.SAMFileWriterFactory.makeBAMWriter(SAMFileWriterFactory.java:154)
    at net.sf.samtools.SAMFileWriterFactory.makeBAMWriter(SAMFileWriterFactory.java:136)
    at net.sf.samtools.SAMFileWriterFactory.makeSAMOrBAMWriter(SAMFileWriterFactory.java:246)
    at net.sf.picard.sam.ReorderSam.doWork(ReorderSam.java:118)
    at net.sf.picard.cmdline.CommandLineProgram.instanceMain(CommandLineProgram.java:179)
    at net.sf.picard.cmdline.CommandLineProgram.instanceMainWithExit(CommandLineProgram.java:120)
    at net.sf.picard.sam.ReorderSam.main(ReorderSam.java:77)
Caused by: java.io.FileNotFoundException:  (No such file or directory)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:221)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:171)
    at net.sf.samtools.util.BinaryCodec.<init>(BinaryCodec.java:95)
    ... 9 more

当我在新终端中将程序称为java -jar /home/ktroule/Programas/picard-tools-1.107/ReorderSam.jar -h时,它会按照我的预期打印帮助。

在此之后我停止使用ctrl+c正常工作的终端,我交换终端以证明问题是与文件有关还是与终端有关。同样的事情发生了,只有一个终端工作(与之前的工作相同)。 我关闭了无法正常工作的终端并打开了一个新终端,但只在原始代码上运行。

我还通过usinf diff比较了有效的终端和没有输出printenv的终端,并且两者都是WINDOWID行的相同例外。

对这个问题的任何猜测?

我没有关闭运行代码的终端,因为我需要它而且我害怕无法运行代码。

1 个答案:

答案 0 :(得分:0)

我能想到的唯一可能导致问题的是,您引用的命令行在I =和O =之后在相应的文件名之前有空格。

您运行的命令行是否可能略有不同,并且此空间存在于一个而不是另一个?

通常,文件名将打印在&#34; java.io.FileNotFoundException:&#34;之间的错误日志中。和#34;(没有这样的文件或目录)&#34;。

在您的情况下,您有两个空格,这意味着它有一个空文件名。这很可能是由于I =和O =之后的空间造成的。