Кросс-компиляция в java 13 и java 8 - PullRequest
0 голосов
/ 03 апреля 2020

Я хочу загрузить java спецификацию версии c JavaCompiler.

Вот как я сейчас использую экземпляр компилятора.

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

Моя цель - собрать "пользователя" java код "в соответствии с java версией (java 8 или java 13), в которой он изначально написан.

Я строю весь свой исходный код в java 8.

Следовательно, compiler получаемый мной экземпляр будет java 8 конкретным c, и я не могу скомпилировать java 13 код (исправьте меня, если я ошибаюсь).

I у меня установлены и java 8, и java 13.

Я прочитал приведенную ниже инструкцию из этой статьи

В этом случае ToolProvider находит компилятор по умолчанию , Можно также найти альтернативные компиляторы или инструменты с помощью механизма поставщика услуг.

Можно ли каким-либо образом загрузить java версию, указанную c java компилятор? Есть ли обходной путь для этого?

Или Если я создаю проект, используя java 13, тогда я могу скомпилировать спецификацию версии c, используя --target или --source или --release аргументы java 13 компилятор?

1 Ответ

1 голос
/ 04 апреля 2020

Я не пробовал этого, но следующий фрагмент может помочь вам:

JavaCompiler eclipseCompiler = ServiceLoader.load(org.eclipse.jdt.internal.compiler.tool.EclipseCompiler.class).iterator().next();

Чтобы создать приложение, вам просто нужно добавить следующее в ваши зависимости (заданные как координаты maven):

<groupId>org.eclipse.jdt</groupId>
<artifactId>ecj</artifactId>
<version>3.21.0</version>

Это будет работать на Java 8 и позволит вашему приложению компилироваться на соответствие 13.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...