2014-10-08 3 views
0

Tomcat 서버에 두 개의 응용 프로그램 (예 : App1 & App2)이 있습니다. 둘 다 C : \ Tomcat7_0_29 \ webapps \ AppX \ WEB-INF \ lib 폴더에 ESAPI-2.0-rc5.jar를 가지고 있습니다. App2는 SAML 요구를 위해 opensaml-2.6.0.jar (C : \ Tomcat7_0_29 \ webapps \ App2 \ WEB-INF \ lib 폴더 내부)을 사용합니다.잘못된 패키지 클래스를 찾으려는 클래스 로더

이제 App1에 필드 데이터를 인코딩 할 때마다 java.lang.ClassNotFoundException: org.opensaml.ESAPISecurityConfig 오류가 발생합니다. 많은 옵션을 시도했지만 함께 작동하지 않습니다.

전체 스택 추적을 도와주세요 :

org.owasp.esapi.errors.ConfigurationException: java.lang.ClassNotFoundException: org.opensaml.ESAPISecurityConfig SecurityConfiguration class (org.opensaml.ESAPISecurityConfig) must be in class path. 
    at org.owasp.esapi.util.ObjFactory.make(ObjFactory.java:113) 
    at org.owasp.esapi.ESAPI.securityConfiguration(ESAPI.java:445) 
    at org.owasp.esapi.ESAPI.encoder(ESAPI.java:208) 
    at xxx.xxx.xxxx.xx.removeBadChars(BaseObject.java:131) 
    at xxx.xxx.xxxx.xx.convert(ClaimsUtil.java:45) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.ClassNotFoundException: org.opensaml.ESAPISecurityConfig 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Unknown Source) 
    at org.owasp.esapi.util.ObjFactory.make(ObjFactory.java:85) 
    ... 24 more 
+0

참고 : 버전 2.1.0 이전의 ESAPI에는 잠재적으로 끔찍한 암호화 결함이 포함되어 있습니다. https://bugzilla.redhat.com/show_bug.cgi?id=1013589 – avgvstvs

+0

가능한 복제본 : https://stackoverflow.com/questions/ 22856730/classnotfoundexception-in-tomcat-6-jar-is-deleted? rq = 1 – avgvstvs

+0

감사합니다. 위의 링크는 동일한 응용 프로그램에서 두 개의 패키지를 처리했습니다. 하지만 제 경우에는 하나의 응용 프로그램이이 응용 프로그램의 일부가 아닌 jar 파일 에서뿐만 아니라 tomcat 라이브러리에도없는 패키지에 액세스하려고합니다. – user2807714

답변

2
  1. 검사가 opensaml의 라이브러리가 클래스 경로에 확인 할 수 있습니다.

http://mvnrepository.com/artifact/org.opensaml/opensaml/2.6.1

는 그것은 opensaml 그 모양이 간단한 해결책 경우가 아니라면 ...

  • 는 opensaml의 최신 릴리스에 대한 받는다는의 repo에서보세요 라이브러리는 esapi 2.0.1에 종속되어 있으며, opensaml의 종속성 이전에 ESAPI-2.0-rc5.jar이로드됩니다. 환경을 복제 할 수없는 사람에게 실제로 가능한 유일한 지침은 opensaml의 소스를 다운로드하고 종속성 관리를 업데이트하여 ESAPI 버전을 가리키는 것입니다.

  • 0

    에 직면 정확히 같은 문제, 내가 바람둥이로 opensaml-2.6.1.jar 파일을 복사하여이 문제를 해결하는 방법/일반적인 lib 폴더 공유 "/ 바람둥이/lib 디렉토리 /."