【问题标题】:Program just works in one terminal程序只在一个终端上运行
【发布时间】:2016-02-10 15:35:37
【问题描述】:

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

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 行,两者都是相同的。

对这个问题有任何猜测吗?

我没有在需要时关闭运行代码的终端,我害怕无法运行代码。

【问题讨论】:

    标签: java terminal


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 现在由于某些未知原因在新终端中可以正常工作。命令总是一样的,因为我只是在复制和粘贴。
    猜你喜欢
    • 2016-04-01
    • 2015-09-22
    • 1970-01-01
    • 2020-07-31
    • 2014-02-05
    • 2015-11-23
    • 1970-01-01
    • 2022-10-14
    • 2021-12-09
    相关资源
    最近更新 更多