3 Stimmen

Wie kann ich den Eclipse-Indenter in meinem Code verwenden?

Ich habe bemerkt, dass der eclipse indenter die neueste Version von Java unterstützt, und es wäre schön, wenn ich diese Klasse verwenden könnte, um generierten Java-Quellcode einzurücken. Gibt es eine Möglichkeit, es zu integrieren?

EDIT: Ich muss in der Lage sein, den Code-Formatierer in meinen Code einzubinden. Keine externen Aufrufe.

EDIT2: Ich habe es geschafft, es zum Laufen zu bringen. Ihr könnt die Geschichte lesen aquí . Danke VonC!

5voto

VonC Punkte 1117238

Sie können versuchen, den Formatierer als eigenständige Anwendung (auch ausführlich hier ).

eclipse -vm <path to virtual machine> -application org.eclipse.jdt.core.JavaCodeFormatter [ OPTIONS ] <files>

Versuchen Sie zunächst, die Formatierungseinstellungen mit der Eclipse-IDE zu definieren, um das richtige Ergebnis zu erzielen, exportieren Sie dann diese Einstellungen, und verwenden Sie diese Konfigurationsdatei in den eclipse.exe-Parametern.
Oder siehe auch "Erzeugen einer Konfigurationsdatei für die Formatter-Anwendung"

eclipse [...] -config <myExportedSettings> 

In einem Java-Programm können Sie versuchen, direkt zu formatieren, indem Sie:

  • Erstellen einer Instanz von CodeFormatter
  • Mit der Methode void format(aString) auf diese Instanz, um aString zu formatieren. Sie gibt die formatierte Zeichenkette zurück.

Dank an Geo selbst und sein Bericht in sein Blogeintrag weiß ich jetzt, dass Sie Folgendes verwenden müssen DefaultCodeFormatter

    String code = "public class geo{public static void main(String[] args){System.out.println(\"geo\");}}";
    CodeFormatter cf = new DefaultCodeFormatter();

    TextEdit te = cf.format(CodeFormatter.K_UNKNOWN, code, 0,code.length(),0,null);
    IDocument dc = new Document(code);
    try {
        te.apply(dc);
        System.out.println(dc.get());
    } catch (MalformedTreeException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (BadLocationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

Auch hier finden Sie alle Einzelheiten im Blogeintrag. Vielen Dank an Geo für das Feedback!


Thorbjørn Ravn Andersen Erwähnt in den Kommentaren :

Maven2 Java Formatter Plugin v0.4 beschreibt ein Maven-Plugin, das es Maven ermöglicht, den Eclipse Formatter aufzurufen.
Ab Version 0.4 wird Eclipse 3.5 aufgerufen, das Java 8 nicht unterstützt.

1voto

Nels Beckman Punkte 20450

Allerdings gibt es ein Problem mit VonCs Antwort: DefaultCodeFormatter befindet sich in einem "internen" Paket und sollte daher nicht von Clients verwendet werden!

Ich habe vor kurzem die gleiche Frage hier auf Stackoverflow gestellt und bekam folgende Antwort die Antwort kurze Zeit später .

Kurz gesagt, Sie müssen ToolFactory verwenden, wie in

ToolFactory.createCodeFormatter(null);

1voto

sevenforce Punkte 7616

Ich habe die CodeFormatter in einem Eclipse-unabhängigen Projekt. Die Standardoptionen, die beim Aufruf von ToolFactory.createCodeFormatter(null); konnte den Quellcode nicht verarbeiten - das Ergebnis der format() Anruf ist null.

Eine minimale Einrichtung der Arbeitsoptionen ist die folgende:

Hashtable<String, String> options = new Hashtable<>();
options.put("org.eclipse.jdt.core.compiler.codegen.targetPlatform", "1.8");
options.put("org.eclipse.jdt.core.compiler.compliance", "1.8");
options.put("org.eclipse.jdt.core.compiler.source", "1.8");
CodeFormatter codeFormatter = ToolFactory.createCodeFormatter(options);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X