线程中出现错误异常";“主要”;java.lang.NullPointerException
您好,我想从java生成gams,我已经安装了gams,下面是代码 gams是一个用于建模的应用程序,我想从java调用它,我确信路径是准确的,我应该怎么做才能纠正它?这给了我一个例外 例外情况:线程中出现错误异常";“主要”;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
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(",");