UPDATEВключить Appengine-Апи-1.0-sdk.jar при развертывании в GAE
Следуя совету мне дали, я решил развернуть меньший проект с просто классом вызывающего этой строкой:
_cache = MemcacheServiceFactory.getMemcacheService();
Теперь я получаю эту ошибку:
java.lang.NoClassDefFoundError: com/google/appengine/api/memcache/MemcacheServiceFactory
Я прочитал here, что это потому, что я пропускаю appengine-api-1.0-sdk.jar
, но here говорится, что его не нужно включать.
Моя проблема в том, что , если я попытаюсь включить его в развертывание, добавив его в каталог WEB-INF \ lib, он будет проигнорирован. Если я попытаюсь использовать другую банку (не связанную с GAE), она будет развернута просто отлично.
Например, обе версии имели appengine-api-1.0-sdk.jar
в \ lib, но в версии 5 также была другая банка (bcprov-jdk15on-147.jar
). Из-за этого разница в размерах между этими двумя.
Подводя итог, на мой вопрос, я должен развернуть appengine-api-1.0-sdk.jar
? И если да, то как я могу избежать его игнорирования?
Зависимости проекта, они являются те, по умолчанию для веб-приложения, которое будет развернуто в GAE из NetBeans
я пытаюсь реализовать Memcache, чтобы я мог использовать тот, который предоставляется GAE при развертывании приложения.
После подмигнули развернуты, когда я пытаюсь запустить его я получаю IllegalStateException
:
java.lang.IllegalStateException: Committed
Это происходит на этой линии:
private MemcacheService _cache=MemcacheServiceFactory.getMemcacheService();
Что я могу сделать, чтобы исправить это?
Вы уверены, что линия кода (MemCacheService), о которой вы думаете, является виновником? Я не вижу ничего в трассировке стека, который поддерживает ваше предположение. Работает ли приложение, если вы прокомментируете эту строку/связанную? Исключение составляет от Jetty, пытающегося сказать вам, что ответ уже был выполнен, и не может сбросить ответ. [Javadoc] (http://docs.oracle.com/javaee/7/api/javax/servlet/ServletResponse.html#reset--) –
@SaiPullabhotla Я добавил 'System.out.println' до и после этой строки кода и тот, который никогда не печатается, но тот, который он делает. Остальная часть кода использует '_cache' – moondaisy
Возможно, вам стоит попробовать этот [пример кода] (https: // github.com/GoogleCloudPlatform/java-docs-samples/blob/master/appengine/memcache/src/main/java/com/example/appengine/memcache/MemcacheConcurrentServlet.java) в автономном сервлете и посмотреть, что произойдет. –