0

我正在尝试从运行 tomcat7 服务器的外部文件(编译的 .class 文件)动态添加 servlet

这是我的代码

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");



    }


}

当我调用 servlet“测试”时,我得到一个 ClassNotFoundException

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

任何帮助将不胜感激

4

1 回答 1

0

javadoc

将具有给定名称和类名的 servlet 添加到此 servlet 上下文。

注册的 servlet 可以通过返回的 ServletRegistration 对象进一步配置。

将使用与此 ServletContext 表示的应用程序关联的类加载器来加载指定的 className 。

(强调我的)

此方法需要一个类名(类似于com.yourcompany.yourapp.TestServlet),而不是文件路径。并且该类必须存在于 webapp 的类路径中,即在 .jarWEB-INF/classes或其中一个 jar 中WEB-INF/lib

旁注:你不应该把类放在默认包中。

于 2013-07-14T09:29:56.063 回答