2

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;
}

2行目を次のように変更しました

super(URI.create("string:///" + name.replaceAll("\\\\", "/") ), Kind.SOURCE);

これで問題が解決しました

4

1 に答える 1

1

するときはname.replaceAll(".", "/")、すべてを に置き換えます/ReplaceAllは最初のパラメーターとして正規表現を使用するため、すべての文字を に一致さ.せて に置き換えます/

ステートメントを次のように置き換えます。

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

\\.: 文字ドットを表します。

于 2012-05-31T08:35:16.683 に答える