1

我的代码中出现以下异常,我不确定系统找不到哪个文件。是我正在执行的命令找不到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是找不到文件,是否总是会出现这样的错误?还是找不到共享库?我怎么知道找不到哪个文件?

4

1 回答 1

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)

于 2013-06-28T01:23:56.473 回答