How to Format Java Code Using Eclipse JDT?
Yo probably format your code often by pressing Ctrl+Shift+F or right clicking Source -> Format. This function is also provide in JDT, so you can also format your Java code in code.
However finding correct class to do this function is not straight-forward, because one of them is a internal class.
The following is the code to format Java code by using DefaultCodeFormatter.
import org.eclipse.jdt.core.ToolFactory;
import org.eclipse.jdt.core.formatter.CodeFormatter;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.IDocument;
import org.eclipse.text.edits.MalformedTreeException;
import org.eclipse.text.edits.TextEdit;
public class FormatterTest {
public static void main(String[] args) {
String code = "public class TestFormatter{public static void main(String[] args){System.out.println(\"Hello World\");}}";
CodeFormatter codeFormatter = ToolFactory.createCodeFormatter(null);
TextEdit textEdit = codeFormatter.format(CodeFormatter.K_COMPILATION_UNIT, code, 0, code.length(), 0, null);
IDocument doc = new Document(code);
try {
textEdit.apply(doc);
System.out.println(doc.get());
} catch (MalformedTreeException e) {
e.printStackTrace();
} catch (BadLocationException e) {
e.printStackTrace();
}
}
}
he apply() method in TextEdit class is the key to this problem. It applies the edit tree rooted by this edit to the GIVEN document.
Output in console:

Depending on your Eclipse version, you will need the following jar files:
- org.eclipse.core.contenttype_3.4.1.R35x_v20090826-0451.jar
- org.eclipse.core.jobs_3.4.100.v20090429-1800.jar
- org.eclipse.core.resources_3.5.2.R35x_v20091203-1235.jar
- org.eclipse.equinox.common_3.5.1.R35x_v20090807-1100.jar
- org.eclipse.equinox.preferences_3.2.301.R35x_v20091117.jar
- org.eclipse.jdt.core_3.5.2.v_981_R35x.jar
- org.eclipse.osgi_3.5.2.R35x_v20100126.jar
- org.eclipse.text_3.5.101.v20110928-1504.jar
- org.eclipse.core.runtime_3.5.0.v20090525.jar

