В процессе разработки мобильных приложений на платформе 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 (версия 52). Рассмотрим процесс настройки по шагам:
jdk-8u381-windows-x64.exe или аналогичный. Стоит учитывать, что официальный сайт Oracle требует авторизации, а в ряде регионов доступ может быть ограничен. В этом случае можно воспользоваться VPN или альтернативными источниками.C:\Java\jdk1.8.0_381.
[info] Путь к Java : C:\Program Files\Java\jdk-1.8
[info] Архитектура Java : 64
[info] Версия Java : java version "1.8.0_381"
[info] Gradle: 6.5
Проанализируем ситуацию с выбором поставщика 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. Проверим это:
java -version.java version "17.0.x", значит, в системной переменной PATH или JAVA_HOME прописана некорректная версия.PATH.В процессе решения задачи мы можем столкнуться с вопросом: какой инструмент использовать? Рассмотрим оба варианта:
1. Конфигурация «Сборщик мобильных приложений»: Это отдельная база данных. Она дает гибкость, позволяет хранить историю сборок, кастомизировать манифест Android более тонко. Однако она требует ручной настройки связки Java, Gradle и Android SDK, что часто и приводит к ошибкам версий.
2. Платформенный сборщик (встроенный в Конфигуратор): Появился в последних версиях платформы 8.3. Он более автоматизирован и «под капотом» сам управляет многими параметрами. Если ваша задача — быстро получить рабочее приложение, рекомендуем использовать именно его. Он лучше адаптирован под современные требования Google Play по уровню API (Target SDK).
Завершая настройку, обратим внимание на версию Android SDK. Если вы планируете публикацию в Google Play, помните:
Подведем итог: Если вы видите ошибку major version 61, просто установите JDK 11 или JDK 8, пропишите к ним путь в настройках сборщика и убедитесь, что системные переменные JAVA_HOME не указывают на Java 17. Это позволит Gradle корректно собрать ваше мобильное приложение.