Как я могу использовать отступ Eclipse из моего кода? - PullRequest
3 голосов
/ 10 июня 2009

Я заметил, что индентор eclipse поддерживает последнюю версию Java, и было бы неплохо, если бы я мог использовать этот класс для отступа сгенерированного исходного кода Java. Есть ли способ его интеграции?

РЕДАКТИРОВАТЬ: мне нужно иметь возможность включить средство форматирования кода в мой код. Нет внешних звонков.

EDIT2: мне удалось заставить его работать. Вы можете прочитать историю здесь . Спасибо VonC!

Ответы [ 3 ]

5 голосов
/ 10 июня 2009

Вы можете попробовать запустить форматтер как автономное приложение (также подробно здесь ).

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

Попробуйте сначала определить параметры форматирования с помощью eclipse IDE, чтобы получить правильный результат, затем экспортируйте эти параметры и используйте этот файл конфигурации в параметрах eclipse.exe.
Или см. Также «Создание файла конфигурации для приложения форматирования»

eclipse [...] -config <myExportedSettings> 

В Java-программе вы можете попробовать напрямую отформатировать:

  • Создание экземпляра CodeFormatter
  • Использование метода void format(aString) в этом экземпляре для форматирования aString. Он вернет отформатированную строку.

Благодаря Geo и его отчету в его записи в блоге , теперь я знаю, что вам нужно использовать 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();
    }

Опять полные сведения в записи блога. Спасибо, Гео, за этот отзыв!


Торбьерн Равн Андерсен упоминает в комментариях :

Плагин Maven2 Java Formatter v0.4 описывает плагин maven, который позволяет Maven вызывать форматтер Eclipse.
Начиная с 0.4 он вызывает Eclipse 3.5, который не поддерживает Java 8.

1 голос
/ 21 мая 2010

На самом деле есть одна проблема с ответом VonC: DefaultCodeFormatter находится во «внутреннем» пакете, и поэтому не должен использоваться клиентами!

Я недавно задал тот же вопрос здесь на stackoverflow, и через некоторое время придумал ответ .

Короче говоря, вам нужно использовать ToolFactory, как в

ToolFactory.createCodeFormatter(null);
0 голосов
/ 08 апреля 2016

Я использовал CodeFormatter в Eclipse-независимом проекте. Параметры по умолчанию, используемые при вызове ToolFactory.createCodeFormatter(null);, не могут обработать исходный код - результат вызова format() равен нулю.

Минимальная настройка рабочих параметров следующая:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...