Ошибка при развертывании проекта в Google App Engine
У меня возникла проблема при попытке развернуть мой проект: "Найден файл JAR, слишком большой для загрузки". Проблема возникает, когда скрипт пытается загрузить appengine-api-1.0-sdk-1.5.3.jar (15,8 МБ, хотя разрешены только файлы 10 МБ). Эта проблема хорошо известна с 2009 года. Существует много билетов в системе отслеживания проблем Google, а также здесь. Есть много сообщений такого рода по всей сети. Но все они имеют в виду два решения:
1) Использование --enable_jar_splitting. Конечно, я пытался использовать это. Нет успеха:
# appengine-java-sdk-1.5.3/bin/appcfg.sh -e some_mail@gmail.com --enable_jar_splitting update project/war
Reading application configuration data...
......
java.lang.IllegalStateException: Found a jar file too large to upload: "/tmp/appcfg4869648953084473935.tmp/WEB-INF/classes/war/WEB-INF/lib/appengine-api-1.0-sdk- 1.5.3.jar". Consider using --enable_jar_splitting.
Unable to update app: Found a jar file too large to upload: "/tmp/appcfg4869648953084473935.tmp/WEB-INF/classes/war/WEB-INF/lib/appengine-api-1.0-sdk- 1.5.3.jar". Consider using --enable_jar_splitting.
Please see the logs [/tmp/appcfg5857347513630341491.log] for further information.
Я пытался использовать разные версии SDK (1.4.3, 1.5.2 и последние 1.5.3). Но скрипт игнорирует параметр --enable_jar_splitting.
2) Распакуйте appengine-api-1.0-sdk-1.5.3.jar в WEB-INF/lib. В этом случае возникает другая ошибка. Проекты ограничены 3000 файлами. Есть 3500 файлов ок. в архиве appengine-api-1.0-sdk-1.5.3.jar и 100 файлов в моем проекте. Таким образом, это решение не работает так же хорошо.
3) Я сам нашел 3d решение. Вы можете удалить appengine-api-1.0-sdk-1.5.3.jar из каталога WEB-INF/lib. Это работает, но только в тех случаях, когда у вас есть простые проекты. Но это не работает в случае проектов, использующих всю мощь Google Appengine. Мне нужно использовать хранилище данных и некоторые другие функции. Без appengine-api-1.0-sdk-1.5.3.jar проект может быть развернут, но он не работает и выдает ошибки в консоли ошибок Google (отсутствуют классы).
Я отправил сообщение в Google. Они молчат, к сожалению.
Пожалуйста, помогите мне, вы умные ребята. Я буду ужасно благодарен. Надеюсь, есть небольшой трюк, чтобы заставить его работать.
2 ответа
Вам не нужно загружать jar API - это часть платформы App Engine. Какую бы конфигурацию вы ни изменили и которая заставляет SDK попытаться загрузить ее, вам следует вернуться обратно.
Вы можете попробовать разделить appengine-api-1.0-sdk-1.5.3.jar вручную.
- Разархивируйте файл jar.
- Zip половина файлов в один файл JAR
- Застегните другую половину к одному файлу фляги.
- Обновите ваш путь к классу и инструменты сборки.