当java给出错误“系统找不到指定的文件”时,如何知道找不到哪个文件?

时间:2013-06-27 21:30:07

标签: java

我的代码中出现以下异常,我不确定系统找不到哪个文件。是我正在执行的命令gfortran.exe还是gfortran所依赖的动态库?我怎么知道,哪个档案是找不到的?

java.io.IOException: CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(ProcessImpl.java:376)
    at java.lang.ProcessImpl.start(ProcessImpl.java:136)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1022)
Caused: java.io.IOException: Cannot run program "gfortran.exe" (in directory "C:\Users\Jason Zwolak\AppData\Local\Temp\pet2-biopack-Jason Zwolak"): CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)
    at com.insilicalabs.pet2.publish.mpf.BiopackCompiler.compile(BiopackCompiler.java:154)
[catch] at com.insilicalabs.pet2.publish.mpf.PublishToMPFProvider.publishImpl(PublishToMPFProvider.java:190)
    at com.insilicalabs.pet2.publish.mpf.PublishToMPFProvider.access$000(PublishToMPFProvider.java:60)
    at com.insilicalabs.pet2.publish.mpf.PublishToMPFProvider$1.run(PublishToMPFProvider.java:67)
    at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1432)
    at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2044)

更新

要澄清一下,如果gfortran.exe是无法找到的文件,那么这样的错误总会如此吗?或者是否无法找到共享库?我怎么知道找不到哪个文件?

1 个答案:

答案 0 :(得分:2)

让我们一步一步地完成这一过程。

Caused: java.io.IOException: Cannot run program "gfortran.exe" (in directory "C:\Users\Jason Zwolak\AppData\Local\Temp\pet2-biopack-Jason Zwolak"): CreateProcess error=2, The system cannot find the file specified

如果查看该行的末尾,则表明在列出的目录中找不到gfortran.exe,或者“系统找不到指定的文件。”

现在,如果无法找到该文件,情况将永远如此。 所以找不到文件,而不是命令。

我们知道这不是一个依赖于gfortran.exe的库,否则会明确声明该错误是由堆栈中的依赖引起的。

当文件存在但无法访问时,可以抛出此异常。当文件权限不允许读取或写入等时会发生这种情况。

解决歧义问题,如果系统无法运行程序,并且找不到列出的文件,则认为它是无法找到的文件,而gfortran.exe就是该文件。为了确保程序本身因为无法找到的文件而无法运行(将明确说明。),请检查at java.lang.ProcessBuilder.start(ProcessBuilder.java:1022)