문제

Tomcat 버전 : 5.0.28 JDK : 1.5.0.14

문제 :

나는 최대 절전 모드와 스트럿을 모두 사용하고 있습니다. 우리는이 라이브러리의 최신 버전에 있지 않으므로 다른 버전의 Apache-Commons 라이브러리가 필요합니다.

내가 염두에두고있는 솔루션 :

Manifest 파일을 사용하고 각각에 대해 다른 버전의 Apache-Commons를 지정하십시오.

내 웹 앱은 WebApps MyApp로 배포되었습니다

그리고 lib는 webapps myapp web-inf lib입니다.

다음과 같이 hibernate3.jar에서 manifest.mf를 수정했습니다

명시 적 버전 : 1.0

Archiver-Version : Plexus Archiver 생성 : 1.5.0_15-B04 (Sun> Microsystems Inc.) 클래스-포스 : Hibernatelib/SLF4J-API-1.5.2.jar

그리고 SLF4J-API-1.5.2.jar를 웹 아프 myapp web-inf lib Hibernatelib에 넣으십시오.

이제 SLF4J-API-1.5.2.jar가 최대 절전 모드와 함께 자동으로로드 될 것으로 예상하지만 작동하지 않습니다 ... Tomcat은 위와 같이 .mf에 지정된 JAR 파일을 찾을 수 없습니다.

질문:

  1. 내가 뭔가 잘못하고 있습니까? 아니면 Tomcat입니까?
  2. 이 문제에 대한 또 다른 해결책이 있습니까?

나는 이미 시도했다. 다음을 확인했다

  1. 파일 끝에서 새로운 라인 문자를 확인했습니다.
  2. 기본 lib 폴더에 slf4j-api-1.5.2.jar를 넣으면 오류가 사라집니다. 그래서이 특정 JAR 파일을 찾을 수 없다는 것을 알고 있습니다.
  3. 매니페스트 파일에서 상대적이고 절대적인 경로를 시도했습니다
도움이 되었습니까?

해결책

유일한 곳 Class-Path 매니페스트의 속성은 다음과 같습니다 jar 매니페스트를 포함하는 것은 (”를 사용하여 실행 가능한 항아리라고합니다.java -jar theFile.jar").

일부 서블릿 컨테이너는이를 지원하는 것처럼 보이지만 이 메일 링리스트 게시물에 (죄송합니다. 더 빨리 저자를 찾을 수 없었습니다.) 사양에도 지정되지 않았습니다.

내가 이해하는 한, 웹 응용 프로그램은 일반적으로 단일 클래스 로더를 사용하여 클래스를로드합니다. "정확하게"해당 의존성 문제를 해결하려면 적어도 2 개의 다른 클래스 로더가 필요합니다.

해킹 솔루션은 사용하는 것일 수 있습니다 Jarjar 또는 다른 라이브러리를 각각의 종속성과 함께 포장하는 유사한 도구.

그래서 당신은 하나를 생산할 것입니다 jar Apache-Commons 라이브러리와 함께 최대 절전 모드를 포함합니다 jar Apache-Commons 라이브러리와 함께 스트럿이 포함되어 있습니다. Apache-Commons 라이브러리의 각 사본은 다른 패키지 (아마도 hibernate.org.apache.* 그리고 struts.org.apache.*) 다른 Classe 버전으로 문제를 해결합니다.

다른 팁

권한이 맞는지 확인 했습니까? 또한 마지막 클래스 경로 라인 이후에 새로운 라인이 있는지 확인하는 아이디어 일 수도 있습니다.


업데이트 : Tomcat이 이와 같은 ClassPath 선언을 지원하지 않는 경우, 떠오르는 유일한 것은 클래스 로더를 엉망으로 만드는 것과 관련이 있습니다. 개인적으로 나는 그렇게하지 않을 것입니다 - 그 길을 따라 잠재적 인 고통의 전 세계가있을 것입니다. 더 나은 대답을 생각할 수 없어서 죄송합니다!

문제가 여전히 지속되는지 확인하기 위해 Tomcat의 최신 버전을 시도해 보셨습니까? Tomcat 6은 이미 몇 년이되었으며 5.5 또는 5.0은 물론 ...

나는 당신이 이것을 할 수 있다고 믿지 않습니다. Tomcat은 ClassPath 문제를 결정하기 위해 Jar Manifests를보고 있지 않습니다. 클래스 로더의 자체 계층 구조를 사용하여 ClassPath가 말하는 것을 사용하여 필요한 것을 찾습니다.

앱의 다른 부분에 대해 다른 버전의 항아리를 원한다면 실제로 필요한 사람처럼 들립니다. 오지. 그것이 문제가 해결하기 위해 발명되었습니다.

거기 있습니다 두 개의 경쟁 JSR 거기에 있지만 Sun 모듈 제안에 대한 구현은 모릅니다.

내가 아는 하나의 앱 서버는 당신이 이것을 할 수 있습니다. Spring의 DM 서버. 그들이 향상시키는 것은 Tomcat의 포크입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top