2014-12-03 4 views
1

글쎄, 필자는 일식, 메이븐, 톰캣 구성과 다소 이상한 문제가 있습니다. 어떻게 든 무작위로 ClassNotFoundException 주 JSP로 (항상 호출되고 모든 페이지에 대한 본문이 포함 된 jsp) 내 프로젝트 가져옵니다. 응용 프로그램이이 문제가 발생하지 않고 테스트 서버 및 라이브 서버에서 정상적으로 실행됩니다. 내 개발 시스템에서 Clean Project, Clean on Tomcat 및 Clean Tomcat Working Directory를 수행 한 후 때때로 다시 작동합니다. 그러나 대부분의 시간 동안 나는이 과정을 여러 번 (10에서 20)해야만 다시 작동하기 시작합니다. 약간의 변화가 있은 후에야 다시 작업을 멈추고 다시 작업을 시작할 때까지 10 ~ 20 시간 동안 다시 청소 및 청소해야합니다. 그건 정말 성가신 일이고, 지금은 어떻게 해결할 지 생각했습니다.톰캣 이클립스 메인 JSP 무작위 클래스가 없습니다.

예외 :

 
    org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.frame_jsp 
    at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:177) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at com.framepool.web.filters.RequestFilter.doFilter(RequestFilter.java:177) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at com.framepool.web.filters.RequestAttributesFilter.doFilter(RequestAttributesFilter.java:146) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748) 
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:486) 
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411) 
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338) 
    at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1054) 
    at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:384) 
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229) 
    at com.framepool.web.VideoRequestProcessor.process(VideoRequestProcessor.java:64) 
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1858) 
    at com.framepool.web.ValidableActionServlet.doGet(ValidableActionServlet.java:59) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:620) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at com.framepool.web.filters.RequestFilter.doFilter(RequestFilter.java:177) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at com.framepool.web.filters.RequestAttributesFilter.doFilter(RequestAttributesFilter.java:146) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748) 
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:486) 
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411) 
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338) 
    at com.framepool.web.filters.rest.LanguageFilter.doFilter(LanguageFilter.java:79) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at com.framepool.web.filters.DomainRedirectFilter.doFilter(DomainRedirectFilter.java:86) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at com.framepool.web.filters.XSSFilter.doFilter(XSSFilter.java:39) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 

    Caused by: java.lang.ClassNotFoundException: org.apache.jsp.frame_jsp 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:132) 
    at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:63) 
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:145) 
    at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:172) 
    ... 66 more 
+0

전체 예외는 무엇입니까? – Blitzkr1eg

+0

설명에 추가했습니다. – DaSch

+0

클래스가 있고 앞에서 볼 수 있다면 일식 문제입니다. 나는 그것을 여러 번 사용 했었습니다. 일반적으로 프로젝트를 정리하거나 .eclipse 폴더 (Linux의 경우)를 삭제하고 프로젝트 설정을 확인하여 클래스 경로가 올바른지 확인합니다. –

답변

0

시작 다시 기본에. ClassNotFoundException의 두 가지 이유는 클래스가 존재하지 않거나 런타임 구성에 클래스가 존재하는 올바른 포인터를 포함하지 않는다는 것입니다.

귀하의 개발 시스템이 귀하의 프로젝트를위한 클래스 파일을 기대하는 곳을 찾아보십시오. 이클립스에 정통한 사람이라면 정확히 어디에 구성되어 있는지 또는 구성 할 수있는 다양한 장소를 말할 수 있습니다. 내 머리 꼭대기에서 벗어날 수는 없습니다. Tomcat을 실행하는 방법에 따라 Eclipse가 아닌 것일 수 있습니다. Tomcat을 별도의 프로그램으로 실행하면 eclipse config와 분리 될 수 있습니다.

또 다른 가능한 방법은 작동 할 때 전체 디스크에서 누락 된 것으로 나타나는 클래스의 .class 파일을 검색하는 것입니다 (또는 그 중 하나는 항상 디스크인지 여부가 확실하지 않습니다. 같은 파일). 여러 복사본이있을 수 있습니다. 다음에 작동하지 않을 때도 동일한 검색을 수행하십시오.

개발 환경에서 클래스 파일을 jar 파일로 패키지하지 않는다고 가정합니다. 그렇다면 두 검색은 클래스 파일의 위치를 ​​알려주지 만 그렇지 않습니다. 아마도 당신은 거기에서 거꾸로 작업하여 무작위로 보이는 이유를 알아낼 수 있습니다. 어떤 과정은 그곳에 놓여 야하지만 그렇게하지는 않습니다.

나는 그것이 실제로 무작위라고 생각하지 않는다. 그리고 나는 그것이 일식이라고 생각하지 않는다. 나는 10-20 시간 중 당신이 청소하고 뭔가 다른 것을 계속하고 있다고 생각합니다. 디스크 공간이 부족하거나 컴파일 문제를 나타내는 로그를 무시하지 않았 음을 확인해 주셨으면합니다.

+0

글쎄요, 주요 질문은 때로는 때때로 작동하지 않는 것입니다. 따라서 구성과 관련이 없다고 확신합니다. 나는 또한 공간이 부족하지 않고 컴파일 문제도 보지 못했다고 확신한다. 나는 또한 때때로이 문제가있는 다른 팀원들과 대화를 나눴다. 그러나 그들은 항상 프로젝트, 바람둥이 및 작업 디렉토리를 청소하여 문제를 해결할 수 있습니다. – DaSch

+0

"기본으로 돌아 가기"의 일부는 "물건을 취하지 않으려 고하며, 직접적인 증거로만 작업하십시오"를 의미합니다. 나는 이것이 구성인지 아닌지를 모른다. 내가하지 않았다는 것을 말하지 않았다. 그것은 내 요점이 아니다.나는 이것이 일식이 이것을 버그 (또는 의도적으로)로하지 않는다고 당신의 문제가 다른 곳에 있다고 확신한다는 것을 말하고 있었다. 오류에 대한 좋은 점은 루트에서 너무 많은 일들로 인한 것이 아니므로 문제 해결을위한 * 증거 *를 모으는 것입니다. 디스크를 검색하는 데 많은 어려움이있는 것처럼 보이지만 반복되는 재설정보다 문제가 될 수는 없습니다. – arcy

+0

원본 질문에 대한 추가 사항에 따라 누락 된 클래스가 궁극적으로 JSP에서 생성된다는 것을 알았습니다. 앱을 실행하기 전에 클래스 파일이 만들어 졌는지, 아니면 즉시 만들어 졌는지 (또는 둘 다) 여부를 아는 것은 유용 할 것입니다. – arcy

2

해결 방법은 Eclipse/Tomcat 스크래치 디렉토리를 완전히 제거하는 것입니다. .class 파일을 검색하는 데는 시간이 오래 걸리고 결과가 없습니다. 스크래치 디렉토리는 /.metadata/.plugins/org.eclipse.wst.server.core에서 찾을 수 있습니다. tmp0라는 폴더를 찾을 수 있습니다. 이 폴더를 제거하면 내 문제가 해결되었습니다.

+0

이것은 나를 위해 일했습니다. 제 경우에는 갑자기 모든 .class 파일이 tomcat 디렉토리에서 사라집니다. 그러면 다시 작동 할 때까지 Clean, Clean, Pray, Clean, Publish 마법을 수행해야합니다. 물론 다음에 다시 깨질 때까지. U는 Neon.1을 사용합니다. 최신 버전은 여전히이 문제가 있습니다. 이 버그가 알려진 버그입니까? –

관련 문제