我使用eclipse代码格式jar文件来格式化java代码并在maven dependecy下使用
<dependency>
<groupId>org.eclipse.jdt</groupId>
<artifactId>org.eclipse.jdt.core</artifactId>
<version>3.7.1</version>
</dependency>
当我尝试格式化以下代码时
package com.editor.test;
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 = "import java.util.Map; public class TestFormatter{public static void main(String[] args){Map<String,Object> map=null;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();
}
}
}
但是当我添加泛型时,eclipse代码格式无法格式化代码。任何人都能说出这个问题的解决方案。
答案 0 :(得分:3)
您没有为ToolFactory.createCodeFormatter
指定任何源级别或合规性级别选项,因此您可能会获得仅支持原始Java而没有泛型的格式化程序。
ToolFactory.createCodeFormatter
的JavaDoc说:
给定的选项至少应该提供源级别 (JavaCore.COMPILER_SOURCE),编译器合规级别 (JavaCore.COMPILER_COMPLIANCE)和目标平台 (JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM)。没有这些选择,它 代码格式化程序无法知道它是什么类型的源代码 需要格式化。
所以你需要这样做。