陷入JavaProcessBuilder.start()中

陷入JavaProcessBuilder.start()中,java,swing,nullpointerexception,processbuilder,Java,Swing,Nullpointerexception,Processbuilder,我正在做一个小型Java项目,它使用Processbuilder类制作一个简单的Java IDE IDEGET输入Java文件名(例如:test.Java),只编译同一项目文件夹中的Java文件 但是我在关于processBuilder.start()的错误消息中遇到了困难 有人能看到我的代码吗?我的代码有什么问题吗 我无法处理错误消息并修复代码 以下是我单击“编译”按钮时的错误消息: java.lang.NullPointerException at java.lang.ProcessBuil

我正在做一个小型Java项目,它使用
Processbuilder
类制作一个简单的Java IDE

IDEGET输入Java文件名(例如:
test.Java
),只编译同一项目文件夹中的Java文件

但是我在关于
processBuilder.start()
的错误消息中遇到了困难

有人能看到我的代码吗?我的代码有什么问题吗

我无法处理错误消息并修复代码

以下是我单击“编译”按钮时的错误消息:

java.lang.NullPointerException
at java.lang.ProcessBuilder.start(Unknown Source)
at sample$2.mouseClicked(sample.java:138)
at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source) .. etc
我的一些代码在这里:

 static String file_Name;
 static String JAVA_FILE_LOCATION;
 static String[] command = {"javac", JAVA_FILE_LOCATION};
另外,在
btn\u Compile
事件发生之前,我获取输入并初始化上面的
String
变量

(例如:
file_Name=“test.java”
JAVA\u FILE\u LOCATION=“javaProjectFolder\project\test.JAVA”


您是否确实初始化了
文件名
JAVA\u文件位置
?我也不例外。另外,看看。您是否已经调试了代码并检查了第138行的
命令的内容?或者,如果在
try{
之后插入
System.out.println(command)
JAVA\u文件位置未初始化,因此为空。这意味着您的下一行代码实际上正在执行此操作:
static String[]command={“javac”,null}“< /COD>以后更改JavaAfFieleLoad”不会改变<代码>命令< /Cord>数组的元素。必须重新分配<代码>命令[1 ] < /代码>。也可以考虑。
 void test() throws IOException, InterruptedException {

    btn_Compile.addMouseListener(new MouseAdapter() { // JButton btn_Compile
        public void mouseClicked(MouseEvent e) {
            try {
                ProcessBuilder processBuilder = new ProcessBuilder(command);
                Process process = processBuilder.start();
                int idx = file_Name.lastIndexOf(".");
                String _fileName = file_Name.substring(0, idx); //
                process = new ProcessBuilder(new String[] {"java", "-cp", "bin", _fileName}).start();

                if (process.getErrorStream().read() != -1) {
                    inputStream = process.getErrorStream();
                }
                else { // compile succeed
                    System.out.println("compiled successfully ...");
                    inputStream = process.getInputStream();
                }
            }
            catch (Exception e2) {
                e2.printStackTrace();
            }
        }
    });
 }

public static void main(String[] args) throws IOException, InterruptedException {
    sample s = new sample();
    s.test();
}