2012-05-30 72 views
2

我正在使用java創建一個編譯器程序,我讓它編譯java文件,並且我找到了發生了什麼錯誤以及發生了哪一行。我的問題是,當它打印出這些信息時,我在輸出的中間加載了///////////,我不明白爲什麼這樣!Java:使用diagnostics.getDiagnostics()來查找錯誤

我的輸出是

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(".", "/")全部/更換這個固定的問題

+0

我們可以看到Diagnostic的toString()方法的來源嗎? – nullpotent

+0

您如何生成您正在編譯的源代碼,具體來說,您使用的是哪種文件管理器?斜槓是「文件名」。 –

回答

1

ReplaceAll以正則表達式作爲第一個參數,以便將所有字符與.匹配,並將其替換爲/

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

\\.

替換爲您的發言代表的字符點陣。

+0

當我改變它,我得到以下錯誤:線程「AWT-EventQueue-0」中的異常java.lang.IllegalArgumentException:索引12處路徑中的非法字符:字符串:/// C:\ projects \ Compiler \ Files To Organized \ Assignment1 \ 111223361 \ Assignment1_111223361/java.java –

+0

@HipHipArray您應該使用'/'而不是''。你可以使用'.replace(「\\」,「/」)'。 –

+0

對不起,我不明白你最後的評論 –