我正在使用java创建一个编译器程序,我让它编译java文件,我让它找出发生了什么错误以及它发生在哪一行。我的问题是,当它打印出这些信息时///////////
,我在输出中间得到了一个负载,我不明白为什么会这样!
我的输出是
Error on line 4 in ////////////////////////////////////////////////////////////////////////////////////////////.java:4: error: class ToCompileTwo is public, should be declared in a file named ToCompileTwo.java
public class ToCompileTwo {
这是我用来获取此显示的代码
for (Diagnostic diagnostic : diagnostics.getDiagnostics()) {
System.out.format("Error on line %d in %s", diagnostic.getLineNumber(), diagnostic);
}
编辑
我设法解决了这个问题,以下方法是创建////////
protected DynamicJavaSourceCodeObject(String name, String code) {
super(URI.create("string:///" + name.replaceAll(".", "/") + Kind.SOURCE.extension), Kind.SOURCE);
this.qualifiedName = name;
this.sourceCode = code;
}
我将第二行更改为
super(URI.create("string:///" + name.replaceAll("\\\\", "/") ), Kind.SOURCE);
这解决了问题