2

次の問題が発生しました。Eclipseを使用して単純なServlepを作成しようとしました。

@WebServlet(description = "Adress book servlet", urlPatterns = {"/new_address"})
public class CAddressBookServlet extends HttpServlet 
{
    public CAddressBookServlet() 
    {
        super();
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    {}
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    {}
    private static final long serialVersionUID = 1L;
}

そしてそれはTomcatでうまく動作します!しかし、その後、プロジェクトにHibernate機能を追加することになりました。サーブレットコンストラクタに1行だけ追加します。

@WebServlet(description = "Adress book servlet", urlPatterns = {"/new_address"})
public class CAddressBookServlet extends HttpServlet 
{
    public CAddressBookServlet() 
    {
        super();
        new AnnotationConfiguration();
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    {}
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    {}
    private static final long serialVersionUID = 1L;
}

次のエラーが発生します。

HTTPステータス500-サーブレットクラスorg.servlets.CAddressBookServletのインスタンス化中にエラーが発生しました


タイプ例外レポート

メッセージサーブレットクラスorg.servlets.CAddressBookServletのインスタンス化中にエラーが発生しました

説明サーバーで内部エラーが発生したため、サーバーはこの要求を実行できませんでした。

例外

javax.servlet.ServletException:サーブレットクラスのインスタンス化中にエラーが発生しましたorg.servlets.CAddressBookServlet org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99 )org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:931)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11 .java:1004)org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:589)org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:310)java.util.concurrent .ThreadPoolExecutor.runWorker(不明なソース)java.util.concurrent.ThreadPoolExecutor$Worker。run(不明なソース)java.lang.Thread.run(不明なソース)

根本的な原因

java.lang.NoClassDefFoundError:org / hibernate / cfg / AnnotationConfiguration org.servlets.CAddressBookServlet。(CAddressBookServlet.java:33)sun.reflect.NativeConstructorAccessorImpl.newInstance0(ネイティブメソッド)sun.reflect.NativeConstructorAccessorImpl.newInstance(不明なソース)sun。 Reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)java.lang.reflect.Constructor.newInstance(Unknown Source)java.lang.Class.newInstance0(Unknown Source)java.lang.Class.newInstance(Unknown Source)org.apache.catalina。 authenticationator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:931)org。 apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:589)org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:310)java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source)java.lang.Thread.run(Unknown Source)ThreadPoolExecutor $ Worker.run(不明なソース)java.lang.Thread.run(不明なソース)ThreadPoolExecutor $ Worker.run(不明なソース)java.lang.Thread.run(不明なソース)

根本的な原因

java.lang.ClassNotFoundException:org.hibernate.cfg.AnnotationConfiguration org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)org .servlets.CAddressBookServlet。(CAddressBookServlet.java:33)sun.reflect.NativeConstructorAccessorImpl.newInstance0(ネイティブメソッド)sun.reflect.NativeConstructorAccessorImpl.newInstance(不明なソース)sun.reflect.DelegatingConstructorAccessorImpl.newInstance(不明なソース)java.lang.reflect .Constructor.newInstance(Unknown Source)java.lang.Class.newInstance0(Unknown Source)java.lang.Class.newInstance(Unknown Source)org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)org。 apache.catalina.valves.ErrorReportValve。invoke(ErrorReportValve.java:99)org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:931)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)org.apache.coyote。 http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:589)org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java: 310)java.util.concurrent.ThreadPoolExecutor.runWorker(不明なソース)java.util.concurrent.ThreadPoolExecutor $ Worker.run(不明なソース)java.lang.Thread.run(不明なソース)AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:589)org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:310) java.util.concurrent.ThreadPoolExecutor.runWorker(不明なソース)java.util.concurrent.ThreadPoolExecutor $ Worker.run(不明なソース)java.lang.Thread.run(不明なソース)AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:589)org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:310) java.util.concurrent.ThreadPoolExecutor.runWorker(不明なソース)java.util.concurrent.ThreadPoolExecutor $ Worker.run(不明なソース)java.lang.Thread.run(不明なソース)run(不明なソース)run(不明なソース)

注根本原因の完全なスタックトレースは、Apache Tomcat/7.0.33ログで入手できます。

サーブレットで休止状態を機能させるにはどうすればよいですか?

4

2 に答える 2

2

@Perceptionには正しい答えがあります。デプロイされたwarファイルにHibernateライブラリを含める必要があります。それらはWEB-INF/libまたはTomcatが承認したディレクトリに置くことができます。私はWEB-INF/libの場所を好むので、サーバー上の他のアプリケーションに干渉することはありません。

于 2012-11-26T06:35:31.880 に答える
0

アノテーション jar が欠落していると思います。 注釈をダウンロードする

ダウンロードしたjarファイルを次のいずれかの場所にコピーします....

-> Tomcat lib ディレクトリ
          また
 -> フォルダ webapps/< your_project >/WEB-INF/lib へ  

そして、サーバーを再起動します

于 2012-11-26T06:25:16.780 に答える