在用servlet做一些练习的时候出现了java.lang.IllegalArgumentException: Can't convert argument: null问题,具体错误
严重: Parse error in application web.xml file at jndi:/localhost/webservice_client/WEB-INF/web.xml。
产生原因,一种情况我就不想多说什么了,网上ctrl+c拷贝来,拷贝去,已经很多了,具体请看
http://blog.csdn.net/c5153000/article/details/7255233
但是这个还是解决不了我现在的问题。我仔细观看了web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>Client</servlet-name>
<servlet-class>com.client.FromClient</servlet-class>
</servlet>
<servlet-mapping>
<serlvet-name>Client</serlvet-name> <!--请注意这里的servlet-name写法 -->
<url-pattern>/client/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
能看出什么了么?真是奇怪了,我之前配置过,发现,只要<servlet></servlet>中缺少或者填错一些元素,那么就会出现红线,但是这里不管怎么写错还是没有提示。结果就出现这种错误了,还是是伤脑经 ,tld文件怎么了?
总结了一下,如果前面两个<servlet-name> </servlet-name> 元素 不一致,那么会出现这个错误,我想出现问题的本身还是web.xlm被加载的时候,处理类中不能读取到指定的<serlvet-name>这个元素,所以为null. 因为没看过tomcat其中处理的源码,这也是我的猜测。所以,前面两个一致,但是都是写错的,如都写成<serlvet-name></serlvet-name> 那么还是出错,所以这里关键在于源码是如何处理的。