首页 > 解决方案 > 为什么我会收到 GAE 应用程序的 ClassNotFoundException

问题描述

我有一月份使用 Objectify 部署了一个 GAE 应用程序,从那以后就没有看过。当我今天部署应用程序并访问应用程序时,出现以下异常:com.google.apphosting.runtime.jetty9.JettyLogger warn: Could not instantiate listener dk.louise.dao.InitializerContextListener (JettyLogger.java:29) java .lang.ClassNotFoundException: dk.louise.dao.InitializerContextListener

其中 dk.louise.dao.InitializerContextListener 实现 javax.servlet.ServletContextListener,并在 web.xml 中定义为:

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" id="WebApp_ID"     version="3.0">
    <listener>
        <listener-class>
            dk.louise.dao.InitializerContextListener
        </listener-class>
    </listener>
...

似乎许多其他人也有类似的问题,并通过使用最新的 GAE SDK 修复了它。我使用 1.9.73,但这并不能解决问题。

谢谢,路易丝

标签: javagoogle-app-engineobjectify

解决方案


ClassNotFoundException并且NoClassDefFoundError几乎总是表明您的类路径设置有问题。这不是 GAE 特有的问题,而是 Java 问题。

很难从提供的信息中调试这个 - 你是如何运行应用程序的?来自您的 IDE 的 Maven、gradle?查看您的类路径是如何设置的,并确保您希望出现的代码存在。


推荐阅读