【问题标题】:Include appengine-api-1.0-sdk.jar when deploying in GAE在 GAE 中部署时包含 appengine-api-1.0-sdk.jar
【发布时间】:2016-09-12 16:58:51
【问题描述】:

更新

按照我得到的建议,我决定部署一个较小的项目,其中只有一个类调用此行:

 _cache = MemcacheServiceFactory.getMemcacheService();

现在我收到此错误:

java.lang.NoClassDefFoundError: com/google/appengine/api/memcache/MemcacheServiceFactory

我读到here 说这是因为我错过了appengine-api-1.0-sdk.jarhere 它说不需要包含它。

我现在的问题是 如果我尝试将它包含在部署中,通过将其添加到 WEB-INF\lib 目录,它会被忽略。如果我尝试使用不同的 jar(非与 GAE 相关)它可以很好地部署。

例如,这两个版本在 \lib 中都有 appengine-api-1.0-sdk.jar,但版本 5 也有不同的 jar (bcprov-jdk15on-147.jar)。这两者之间的大小差异是因为这个。

总而言之,我的问题是,我应该部署appengine-api-1.0-sdk.jar 吗? 如果是这样,那么我怎样才能避免它被忽略?

Link to .rar with project.

项目依赖项,它们是将从 NetBeans 部署到 GAE 的 Web 应用程序的默认依赖项


我正在尝试实现 Memcache,以便在部署应用程序时可以使用 GAE 提供的缓存。

一旦它被部署,当我尝试运行它时,我会得到一个IllegalStateException

java.lang.IllegalStateException: Committed

这发生在这一行:

private MemcacheService _cache=MemcacheServiceFactory.getMemcacheService();

我能做些什么来解决它?

【问题讨论】:

  • 你确定你想的那行代码(MemCacheService)是罪魁祸首吗?我在堆栈跟踪中没有看到任何支持您的假设的内容。如果您注释掉该行/相关,该应用程序是否有效?例外是 Jetty 试图告诉您响应已经提交并且无法重置响应。 Javadoc
  • @SaiPullabhotla 我在这行代码之前和之后添加了一个System.out.println,之后的那个永远不会被打印出来,但之前的那个会。其余代码使用_cache
  • 也许你应该在一个独立的 Servlet 中试试这个sample code 看看会发生什么。
  • @SaiPullabhotla 感谢您的提示,我只是意识到错误是什么,但我也没有设法修复那个错误
  • 您的项目中有哪些确切的依赖项?

标签: java google-app-engine jar memcached appcfg


【解决方案1】:

堆栈跟踪表明您正在尝试在您的 HTTP 响应上写一些东西或设置一些东西你已经提交它之后。与您使用 Memcache 无关。

【讨论】:

    猜你喜欢
    • 2011-02-15
    • 2023-03-13
    • 1970-01-01
    • 2020-04-03
    • 2019-04-04
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多