Java 6以降では、JavaCompilerを使用してテキストをコンパイルし、ファイルに何らかの問題がある場合はそれを示すDiagnosticオブジェクトを取得できます。したがって、あなたの例では、エディタの内容をJavaCompilerに渡して実行し、問題を報告する必要があります。以下の例では、ファイルに書き出されたエディタテキストを想定しています。
例コード:
ファイル
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Formatter;
import java.util.List;
import java.util.Locale;
import javax.tools.Diagnostic;
import javax.tools.DiagnosticCollector;
import javax.tools.JavaCompiler;
import javax.tools.JavaFileObject;
import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;
public class JavaSyntaxChecker {
public static void main(String[] args) {
System.out.println(JavaSyntaxChecker.check("/path/to/HelloBuggyWorld.java"));
}
public static List<String> check(String file) {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
Iterable<? extends JavaFileObject> compilationUnits =
fileManager.getJavaFileObjectsFromStrings(Arrays.asList(file));
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();
compiler.getTask(null, fileManager, diagnostics, null, null, compilationUnits).call();
List<String> messages = new ArrayList<String>();
Formatter formatter = new Formatter();
for (Diagnostic diagnostic : diagnostics.getDiagnostics()) {
messages.add(diagnostic.getKind() + ":\t Line [" + diagnostic.getLineNumber() + "] \t Position [" + diagnostic.getPosition() + "]\t" + diagnostic.getMessage(Locale.ROOT) + "\n");
}
return messages;
}
}
出力
public class HelloBuggyWorld {
String test // missing a semicolon
public static void main (String [] args) {
System.out.println('Hello World!'); // should be double quoted
}
}
チェッカーをチェックします
main
メソッドを実行しています。
[ERROR: Line [5] Position [124] HelloBuggyWorld.java:5: unclosed character literal
, ERROR: Line [5] Position [126] HelloBuggyWorld.java:5: ';' expected
, ERROR: Line [5] Position [131] HelloBuggyWorld.java:5: not a statement
, ERROR: Line [5] Position [136] HelloBuggyWorld.java:5: ';' expected
, ERROR: Line [5] Position [137] HelloBuggyWorld.java:5: unclosed character literal
]
Eclipseを開始するのに最適な場所は次のとおりです。http://www.eclipse.org – paulsm4
NetBeansは最適な場所です。http://platform.netbeans.org/tutorials/nbm-javacc-lexer.html –
@Steven Morad:答えを選んで、まだ何を探しているのかをお聞かせください – orangepips