톰캣 java.lang.NullPointerException

Posted by Breeze24
2016. 6. 5. 00:34 ETC/TroubleShooting

톰캣 java.lang.NullPointerException


톰캣8.0에서 input type='file'로 했을 때 아래와 같은 오류가 발생했다. 

오류 내용

HTTP Status 500 - java.lang.NullPointerException

type Exception report

message java.lang.NullPointerException

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: java.lang.NullPointerException
	org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

root cause

java.lang.NullPointerException
	java.lang.Class.isAssignableFrom(Native Method)
	org.apache.struts.util.RequestUtils.rationalizeMultipleFileProperty(RequestUtils.java:506)
	org.apache.struts.util.RequestUtils.populate(RequestUtils.java:459)
	org.apache.struts.chain.commands.servlet.PopulateActionForm.populate(PopulateActionForm.java:50)
	org.apache.struts.chain.commands.AbstractPopulateActionForm.execute(AbstractPopulateActionForm.java:60)
	org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
	org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
	org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)
	org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
	org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.28 logs.



.

해결 방법

초기에는 web.xml에 multipart 관련 설정을 하지 않아서 인가, 내가 모르는 설정이 있나 해서 인터넷 서칭을 해가면서 확인했지만, 특별한 원인을 찾지 못했다. 

하루 정도 삽질을 하다가 드디어 원인을 찾았다. 

원인은 너무 심플했다. 


<input name="xml_file" type="file" size="40">로 되어 있던 부분을

<input id="xml_file" type="file" size="40">

.