陷入JavaProcessBuilder.start()中
我正在做一个小型Java项目,它使用陷入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
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();
}