2009-07-27 4 views
8

나는 foo.war와 bar.war 두 가지 전쟁이있다. foo는 bar의 클래스를 사용합니다. foo를 시작하고 Java의 classpath bar.war에 추가하려고 시도하지만 java가 ClassNotFoundException을 발생시킵니다.Java의 classpath에 WAR 추가하기

bar.war의 이름을 bar.jar로 변경하고 디렉토리 구조를 jar 모양으로 편집하면 작동합니다. -CP 스위치

자바의 문서는 전쟁 파일을 언급하지 않습니다

-classpath <class search path of directories and zip/jar files> 
       A ; separated list of directories, JAR archives, 
       and ZIP archives to search for class files. 
+0

나는 이것과 비슷한 문제가있다. 나는 수십 개의 항아리와 수십 개의 설정 파일을 가지고 있는데, 전쟁에 빠져서 "클래스 패스"로 사용하는 그루비 스크립트를 실행할 수 있기를 원한다. 그냥 일이야. 항상 대안이 있지만, 이것은 가장 유연한 방법이었을 것이며 아마도 나에게 일의 시간을 절약 해 주었을 것입니다 ... 오, 음, 다음 해결책에 대해서. 어쨌든 질문에 +1 - 나에게 시간을 절약. –

답변

15

WAR 파일은 라이브러리가 아닌 전체 웹 응용 프로그램을위한 파일입니다. 그들은 라이브러리가 있지만 그 자체로 응용 프로그램입니다.

하나의 웹 응용 프로그램이 다른 응용 프로그램에 의존해서는 안됩니다. 그것들은 같은 라이브러리에 의존 할 수도 있지만 서로는 의존하지 않을 수도 있습니다.

기본적으로 공통 기능을 추출하여 라이브러리 (jar 파일)로 만들고 두 WAR 파일에 jar 파일을 포함 시키거나 classpath의 공통 부분에 추가하십시오.

+0

증가하는 프로젝트 목록에서 아직 또 다른 프로젝트를 피하려고했습니다. 오 잘. – ripper234

0

전쟁 파일의 구조는 다음 항아리가 작동하지 않도록 매우 다르다. Java 클래스 파일은 WAR 클래스 디렉토리에 보관되는 반면 Jar 파일에는 Java 클래스 파일이 직접 저장됩니다. bar.war의 Java 클래스 파일이있는 폴더를 추가하지 않는 이유는 무엇입니까?

달성하려는 목표는 무엇입니까?