2014-10-17 41 views
3

我使用Eclipse代碼格式JAR文件格式的Java代碼及以下行家dependecy的Eclipse代碼fomatter不工作的Java泛型代碼?

<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代碼格式不能格式代碼,當我添加泛型。任何人都可以告訴解決這個問題的方法。

回答

3

您沒有指定任何源代碼級或合規水平選項ToolFactory.createCodeFormatter所以你很可能得到的是隻支持沒有泛型原始的Java格式化。

ToolFactory.createCodeFormatter的JavaDoc的說:

給出的選項應至少提供源代碼級 (JavaCore.COMPILER_SOURCE),編譯器合規水平 (JavaCore.COMPILER_COMPLIANCE)和目標平臺 (javacore中.COMPILER_CODEGEN_TARGET_PLATFORM)。如果沒有這些選項, 是不可能的代碼格式化知道它 需要的格式是什麼樣的來源。

所以,你需要做的。

+0

確定地圖選項= JavaCore.getOptions();它花了地圖,所以我必須在Map上設置值,然後傳遞給方法? – JavaBeigner 2014-10-17 11:57:08

+0

就是這樣 – 2014-10-17 12:03:04