我需要处理生成编译/运行时的不同错误/异常消息.
我执行一个Java程序读取由此生成的流:
final Process p2 = builder.start();
BufferedReader in = new BufferedReader(new
InputStreamReader(p2.getInputStream()));
每次成功,都会生成并显示输出.没问题.但我需要为每条错误消息显示自定义消息.
例如:
Error: Main method not found in class dummy.helloParse10.hello, please define the main method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
可以自定义为:错误:找不到主要方法
我目前的方法非常丑陋且有限.我正在查看错误流中是否存在“Exception”字符串,然后取出子字符串.如下所示:
if(tError.contains("Exception"))
tError=tError.substring(tError.indexOf("main\"")+5,tError.indexOf("at"))
+ "( At Line: "+tError.substring(tError.indexOf(".java")+6);
但它并没有广泛地定制我的方法.
我能做的最好的事情是什么?
编辑:
我认为我的问题不清楚.基本上我正在通过执行Java程序
的ProcessBuilder.
//Compile the program
Process p = Runtime.getRuntime().exec("javac filename ");
// Now get the error stream if available :
BufferedReader in = new BufferedReader(new
InputStreamReader(p.getOutputStream()));
String line = null;
while ((line = in.readLine()) != null) {
//process error in compilation.
}
...
...
// ProcessBuilder to execute the program.java
//Read the output or runtime Exception
这个过程的输出可能不是te java程序的结果,也不是从进程steam获取的异常/错误,而是以String形式.需要操作那些错误.
更新:
我现在可以通过@Miserable Variable建议的Java Compiler API来解决编译时错误.我如何同样处理运行时异常?
编辑:
实际上,无法修改要在新进程中运行的程序.它们是用户特定的.