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