Как исправить ошибку Unsupported class file major version 61 при сборке мобильного приложения 1С

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В процессе разработки мобильных приложений на платформе 1С программисты часто сталкиваются с системными ошибками на этапе компиляции пакета (APK). Одной из самых коварных и непонятных на первый взгляд является ошибка Unsupported class file major version 61. Рассмотрим подробнее, почему она возникает, как расшифровать технический лог и какие шаги предпринять, чтобы успешно завершить сборку приложения.

Выясним причину: почему сборка завершается неудачей

Проанализируем типичный текст ошибки, который выдает консоль сборщика:


FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring root project 'mab-91dfe0c5-485d-41b4-8c50-e8a96327bea5'.
> Could not open proj generic class cache for build file 'G:\tempp\mab-build.gradle'
> BUG! exception in phase 'semantic analysis' in source unit '_BuildScript_' 
Unsupported class file major version 61

Разберем, что скрывается за этими строками. Ключевая фраза здесь — Unsupported class file major version 61. В экосистеме Java каждая версия компилятора имеет свой внутренний номер (Major Version). Номер 61 соответствует Java 17. Ошибка говорит о том, что инструмент автоматизации сборки Gradle, который использует 1С, «не понимает» байт-код, созданный 17-й версией Java.

Посмотрим на соответствие версий Java и Gradle. В большинстве дистрибутивов мобильной платформы 1С (включая версии 8.3.21, 8.3.23) используется Gradle 6.5. Согласно официальной документации Gradle, версия 6.5 поддерживает работу с Java не выше 14-й версии. Когда в системе установлена современная Java 17, Gradle пытается использовать её для анализа скриптов сборки и терпит неудачу.

Решение 1: Установка совместимой версии JDK 8

Самый проверенный путь, который рекомендует сообщество и сама компания 1С для старых версий сборщиков, — это использование JDK 8 (версия 52). Рассмотрим процесс настройки по шагам:

  1. Загрузка дистрибутива: Вам потребуется файл jdk-8u381-windows-x64.exe или аналогичный. Стоит учитывать, что официальный сайт Oracle требует авторизации, а в ряде регионов доступ может быть ограничен. В этом случае можно воспользоваться VPN или альтернативными источниками.
  2. Установка: Установите JDK в папку без пробелов и кириллицы в пути, например, C:\Java\jdk1.8.0_381.
  3. Настройка в 1С: В конфигурации «Сборщик мобильных приложений» или в настройках платформенного сборщика укажите путь к установленной папке. Проверьте, что в логе сборки отображается корректная версия:

[info] Путь к Java : C:\Program Files\Java\jdk-1.8
[info] Архитектура Java : 64
[info] Версия Java : java version "1.8.0_381"
[info] Gradle: 6.5

Решение 2: Использование Liberica JDK (рекомендуемый вариант)

Проанализируем ситуацию с выбором поставщика Java. Если вы не хотите связываться с регистрацией на Oracle, отличным вариантом станет Liberica JDK от компании BellSoft. Это дистрибутив OpenJDK, который полностью совместим с 1С и часто предлагается самой платформой по прямой ссылке.

Важный момент по поводу лицензирования: Существует заблуждение, что Liberica JDK платная или имеет тестовый период 3 месяца. На самом деле, сам JDK является бесплатным ПО с открытым исходным кодом. Платная поддержка (LTS) — это дополнительная услуга. Для целей разработки и сборки мобильных приложений вы можете использовать её бессрочно и бесплатно.

Для большинства современных версий мобильной платформы 1С (начиная с 8.3.20) оптимальным выбором будет Java 11. Она стабильнее работает с Android SDK и при этом не вызывает конфликтов «major version» с Gradle 6.x и 7.x.

Проверка переменных окружения

Иногда даже после указания верного пути в настройках 1С, ошибка сохраняется. Выясним причину: Gradle может игнорировать настройки 1С и брать версию Java из системных переменных Windows. Проверим это:

  1. Откройте командную строку (cmd).
  2. Введите команду java -version.
  3. Если вы видите ответ java version "17.0.x", значит, в системной переменной PATH или JAVA_HOME прописана некорректная версия.
  4. Необходимо изменить системные переменные, указав путь к JDK 8 или JDK 11, либо временно переместить путь к нужной Java в начало списка в переменной PATH.

Сравнение инструментов: Платформенный сборщик vs Конфигурация «Сборщик»

В процессе решения задачи мы можем столкнуться с вопросом: какой инструмент использовать? Рассмотрим оба варианта:

1. Конфигурация «Сборщик мобильных приложений»: Это отдельная база данных. Она дает гибкость, позволяет хранить историю сборок, кастомизировать манифест Android более тонко. Однако она требует ручной настройки связки Java, Gradle и Android SDK, что часто и приводит к ошибкам версий.

2. Платформенный сборщик (встроенный в Конфигуратор): Появился в последних версиях платформы 8.3. Он более автоматизирован и «под капотом» сам управляет многими параметрами. Если ваша задача — быстро получить рабочее приложение, рекомендуем использовать именно его. Он лучше адаптирован под современные требования Google Play по уровню API (Target SDK).

Требования к API Level и Android SDK

Завершая настройку, обратим внимание на версию Android SDK. Если вы планируете публикацию в Google Play, помните:

Подведем итог: Если вы видите ошибку major version 61, просто установите JDK 11 или JDK 8, пропишите к ним путь в настройках сборщика и убедитесь, что системные переменные JAVA_HOME не указывают на Java 17. Это позволит Gradle корректно собрать ваше мобильное приложение.

← На главную