gpt4 book ai didi

Java:使用 diagnostics.getDiagnostics() 查找错误

转载 作者:行者123 更新时间:2023-11-30 11:44:18 24 4
gpt4 key购买 nike

我正在使用 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);

这解决了问题

最佳答案

当您执行 name.replaceAll(".", "/") 时,您将全部替换为 /ReplaceAll将正则表达式作为第一个参数,以便将所有字符与 . 匹配并将它们替换为 /.

将您的声明替换为:

name.replaceAll("\\.", "/")

\\. : 代表字符点。

关于Java:使用 diagnostics.getDiagnostics() 查找错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10820672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com