Eclipse代码格式化器无法处理Java泛型代码?

4
我正在使用Eclipse代码格式化JAR文件来格式化Java代码,并使用以下Maven依赖关系。
<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代码格式化无法在我添加泛型时格式化代码。有人能告诉我这个问题的解决方法吗?

1个回答

4
您没有指定任何源级别或兼容级别选项给ToolFactory.createCodeFormatter,因此您可能会得到一个仅支持原始Java而不支持泛型的格式化程序。 ToolFactory.createCodeFormatter的JavaDoc说:
给定的选项应至少提供源级别(JavaCore.COMPILER_SOURCE)、编译器兼容级别(JavaCore.COMPILER_COMPLIANCE)和目标平台(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM)。没有这些选项,代码格式化器无法知道需要格式化什么类型的源代码。
所以您需要这样做。

好的,Map选项 = JavaCore.getOptions(); 这需要使用Map设置值,然后将其传递给方法吗? - JavaBeigner
是的,类似这样的东西 - greg-449

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接