@WebServlet写的接口找不到

今天用@WebServlet注解写了个接口,因为实在不想用servlet的方式了。写好后调试,一直报404,找不到入口,反复查找了下,接口名没写错,又去看了web.xml,我的是3.0版本的,xsi:schemaLocation=“http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd” version=“3.0” metadata-complete=“false”>,metadata-complete已经设置成false,启用注解了,其实这属性不加也可以,只要是3.0版本及以上的,不特别说明,默认是启用注解映射路径的。折腾了老半天,实在没辙,只好用回servlet,本以为可以用了,谁知又报了个异常:
HTTP Status 500 - Error instantiating servlet class com.servlet.ParamsUploadServlet,从异常的描述来看,是说找不到这个servlet,可我明明写了这个servlet,路径也没错啊,后来上网一搜,在这位仁兄的博客中受到了启发:https://blog.csdn.net/qq_25014783/article/details/73522484,他列了3种情形下会产生这种异常,前两种都不属于我的,当我看到第三种的时候,3.classes目录错误或者没有生成 .class文件。眼睛一亮,我的会不会是这种情况,这一去看,果不其然,真的没有生成ParamsUploadServlet的class文件,那刚才我用@WebServlet写的接口会不会也是没有生成编译文件引起的。果然还真是,没有生成class文件。问题找到了,那么解决办法就是让项目产生class文件了,我使用的是myeclipse,这里提供了解决办法:https://blog.csdn.net/yanjiaye520/article/details/24729261,第一种办法我直接忽略,直奔第二种,当我打开jre的时候,发现我原来指定的jre是我自定义的1.8.0_45,此时变成系统自带的jre,如下图:
在这里插入图片描述
怪不得后面写的接口,通通都找不到了,把jre重新定义为我自己安装的jre,重新启动项目,终于产生.class文件了,在浏览器上也能访问@WebServlet注解的接口了。至于为什么jre会自动改为工具自带的,有可能是jar缺失导致的,之前浏览时,好几个jar的状态都是missing,那有可能是改变了jar引用的地方,导致部分jar用不了,从而开发工具引用不了自定义的jre,恢复为它自带的jre,但工具自带的jre并不能产生class文件。所以须改为自定义的jre就好了。

猜你喜欢

转载自blog.csdn.net/shenxiaomo1688/article/details/86667858
今日推荐