2016-09-12 2 views
1

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). Из-за этого разница в размерах между этими двумя. enter image description here

Подводя итог, на мой вопрос, я должен развернуть appengine-api-1.0-sdk.jar? И если да, то как я могу избежать его игнорирования?

Link to .rar with project.

Зависимости проекта, они являются те, по умолчанию для веб-приложения, которое будет развернуто в GAE из NetBeans

enter image description here


я пытаюсь реализовать Memcache, чтобы я мог использовать тот, который предоставляется GAE при развертывании приложения.

После подмигнули развернуты, когда я пытаюсь запустить его я получаю IllegalStateException:

java.lang.IllegalStateException: Committed 

Это происходит на этой линии:

private MemcacheService _cache=MemcacheServiceFactory.getMemcacheService(); 

Что я могу сделать, чтобы исправить это?

+1

Вы уверены, что линия кода (MemCacheService), о которой вы думаете, является виновником? Я не вижу ничего в трассировке стека, который поддерживает ваше предположение. Работает ли приложение, если вы прокомментируете эту строку/связанную? Исключение составляет от Jetty, пытающегося сказать вам, что ответ уже был выполнен, и не может сбросить ответ. [Javadoc] (http://docs.oracle.com/javaee/7/api/javax/servlet/ServletResponse.html#reset--) –

+0

@SaiPullabhotla Я добавил 'System.out.println' до и после этой строки кода и тот, который никогда не печатается, но тот, который он делает. Остальная часть кода использует '_cache' – moondaisy

+1

Возможно, вам стоит попробовать этот [пример кода] (https: // github.com/GoogleCloudPlatform/java-docs-samples/blob/master/appengine/memcache/src/main/java/com/example/appengine/memcache/MemcacheConcurrentServlet.java) в автономном сервлете и посмотреть, что произойдет. –

ответ

1

Трассировка стека предполагает, что вы пытаетесь что-то написать или установить что-то на свой ответ HTTP после, который вы уже совершили. Это не связано с использованием Memcache.

Смежные вопросы