0

tomcat7 サーバーを実行している外部ファイル (コンパイル済みの .class ファイル) からサーブレットを動的に追加しようとしています。

これが私のコードです

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletRegistration;

import com.sun.org.apache.bcel.internal.util.ClassLoaderRepository;



public class ConListenerImlp implements ServletContextListener{


    @Override
    public void contextDestroyed(ServletContextEvent arg0) {

    }

    @Override
    public void contextInitialized(ServletContextEvent arg0) {
        ServletContext context =  arg0.getServletContext();
        final ServletRegistration.Dynamic dn=context.addServlet("test","C:\\Users\\Learning\\workspace\\Server\\build\\classes\\Test.class");
        dn.setAsyncSupported(true);
        dn.addMapping("/test");



    }


}

サーブレット「テスト」を呼び出すと、ClassNotFoundException が発生します

java.lang.ClassNotFoundException: C:\Users\Learning\workspace\Server\build\classes\Test.class

どんな助けでも大歓迎です

4

1 に答える 1

0

javadocから:

指定された名前とクラス名を持つサーブレットをこのサーブレット コンテキストに追加します。

登録されたサーブレットは、返された ServletRegistration オブジェクトを介してさらに構成できます。

指定された classNameは、この ServletContext によって表されるアプリケーションに関連付けられたクラスローダーを使用してロードされます

(私のものを強調)

com.yourcompany.yourapp.TestServletこのメソッドは、ファイル パスではなく、クラス名 (のようなもの) を想定しています。また、クラスは webapp のクラスパス、つまりWEB-INF/classesの jar または jar の 1 つに存在する必要がありますWEB-INF/lib

補足: クラスをデフォルトのパッケージに入れるべきではありません。

于 2013-07-14T09:29:56.063 に答える