Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
线程中出现错误异常";“主要”;java.lang.NullPointerException_Java_File - Fatal编程技术网

线程中出现错误异常";“主要”;java.lang.NullPointerException

线程中出现错误异常";“主要”;java.lang.NullPointerException,java,file,Java,File,您好,我想从java生成gams,我已经安装了gams,下面是代码 gams是一个用于建模的应用程序,我想从java调用它,我确信路径是准确的,我应该怎么做才能纠正它?这给了我一个例外 例外情况: Exception in thread "main" java.lang.NullPointerException at java.lang.ProcessBuilder.start(ProcessBuilder.java:441) at jav

您好,我想从java生成gams,我已经安装了gams,下面是代码 gams是一个用于建模的应用程序,我想从java调用它,我确信路径是准确的,我应该怎么做才能纠正它?这给了我一个例外 例外情况:

    Exception in thread "main" java.lang.NullPointerException
            at java.lang.ProcessBuilder.start(ProcessBuilder.java:441)
            at java.lang.Runtime.exec(Runtime.java:593)
            at java.lang.Runtime.exec(Runtime.java:466)
            at gams.RunGAMS.main(RunGAMS.java:27)

Java Result: 1
这是我更改的代码

请看以下代码:

String[] cmdArray = new String[5];
cmdArray[0] = ...;
cmdArray[1] = ...;
cmdArray[2] = ...;
cmdArray[3] = ...;
您正在创建一个包含五个元素的数组,但只填充其中的四个元素


如果您只需要四个参数,请尝试将数组大小更改为4。

路径中有一个空格,请看下面几行

cmdArray[0] ="C:"+File.separator+"Program Files"+File.separator+"GAMS23.7" + File.separator +"gams.exe";  

在这一行中,您定义了包含一个空格的“程序文件”,因此变量cmdArray[0]基本上只存储了一个保持值,如=C:\Program,它将在空格后终止。与其他数组元素发生这种情况的方式相同,因此它给出了Nul指针异常。

避免创建大小错误的数组的方法是使用一行程序

String sep = File.separator;
String[] cmdArray = {
          "C:"+sep+"Program Files"+sep+"GAMS23.7" + sep +"gams.exe",
          "C:"+sep+"Documents and Settings"+sep+"Parsa"+sep+"My Documents"+sep+"gamsdir"+sep+"projdir" + sep +"trnsport.gms",
          "C:"+sep+"Documents and Settings"+sep+"Parsa"+sep+".nbi"+ sep+"tmp",
          "LO=3"};
或者缩短它

String[] cmdArray = "C:/Program Files/GAMS23.7/gams.exe,C:/Documents and Settings/Parsa/My Documents/gamsdir/projdir/trnsport.gms,C:/Documents and Settings/Parsa/.nbi/tmp,LO=3".replaceAll("/", File.separator).split(",");
String[] cmdArray = "C:/Program Files/GAMS23.7/gams.exe,C:/Documents and Settings/Parsa/My Documents/gamsdir/projdir/trnsport.gms,C:/Documents and Settings/Parsa/.nbi/tmp,LO=3".replaceAll("/", File.separator).split(",");