Google app engine GAE:java.lang.NoClassDefFoundError:com/google/appengine/api/blobstore/BlobstoreServiceFactory

Google app engine GAE:java.lang.NoClassDefFoundError:com/google/appengine/api/blobstore/BlobstoreServiceFactory,google-app-engine,jakarta-ee,google-cloud-storage,blobstore,Google App Engine,Jakarta Ee,Google Cloud Storage,Blobstore,请帮我做这个。我正在使用blob store保存图像,它在我的本地环境中工作得非常好。但是当我在云上部署相同的代码时,它抛出了一个异常:java.lang.NoClassDefFoundError:com/google/appengine/api/blobstore/BlobstoreServiceFactory 我正在使用GAE 1.8.4,很可能您的war/WEB-INF/lib/文件夹中缺少appengine api.jar 如果您使用Eclipse,请单击Problems选项卡。您可能会

请帮我做这个。我正在使用blob store保存图像,它在我的本地环境中工作得非常好。但是当我在云上部署相同的代码时,它抛出了一个异常:java.lang.NoClassDefFoundError:com/google/appengine/api/blobstore/BlobstoreServiceFactory


我正在使用GAE 1.8.4,很可能您的
war/WEB-INF/lib/
文件夹中缺少
appengine api.jar


如果您使用Eclipse,请单击Problems选项卡。您可能会看到一条警告,说明此jar在服务器上不可用。右键单击此警告,选择快速修复,选择“复制…”选项。或者手动将此jar复制到此目录。

在我的示例中,所需的jar位于WEB-INF/lib文件夹中,但错误仍在发生。。。我发现发生此错误是因为Jetty 9尚未完成类加载启动过程,而我的一个初始化类需要BlobstoreService:

public class InitializeAppContextListener implements ServletContextListener {

    private BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
因此,在上下文完全加载后,我不得不推迟实例变量初始化,如下所示:

public class InitializeAppContextListener implements ServletContextListener {
    private BlobstoreService blobstoreService;

    public void contextInitialized(ServletContextEvent event) {
        blobstoreService = BlobstoreServiceFactory.getBlobstoreService();

然后,webapp又可以正常启动了。这个新行为是在我们使用JDK1.8从ServletAPI2.5升级到3.1之后出现的…

Hi@Andrei,我正在使用maven。我必须在pom.xml文件中提供任何依赖项吗?刚才检查了我的WEB-INF/lib/并在那里找到appengine-api-1.0-sdk-1.8.4.jar文件。除了找到的jar之外,还需要有appengine-api.jar。