2012-10-17 3 views
0

내 workspace에 2 개의 프로젝트가 있습니다. 프로젝트 A : 약간의 편집으로 아파치 톰캣의 근원 [일부 종속 항아리가 있습니다]. 프로젝트 B : 작은 프로젝트가 하나의 메소드 [프로젝트 A의 메소드 중 한 가지 메소드]를 호출합니다.jar로 내보내기 한 후 eclipse 프로젝트가 작동하지 않습니다.

그래서 프로젝트 B (BuildPAth의 프로젝트에 추가됨)에서 프로젝트 A를 사용하거나 프로젝트 A에서이 방법을 테스트 할 때. 그러나 프로젝트 B가 내 보낸 프로젝트 A의 jar 파일을 사용하면 작동하지 않습니다 (프로젝트 B의 BuildPath에서 프로젝트 A 만 제거하고 A의 jar 파일을 추가하십시오). 던지기 예외 :

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/tools/ant/util/FileUtils 
    at org.apache.jasper.JspC.resolveFile(JspC.java:1602) 
    at org.apache.jasper.JspC.setOutputDir(JspC.java:863) 
    at org.apache.jasper.JspC.setArgs(JspC.java:276) 
    at org.apache.jasper.JspC.main(JspC.java:241) 
    at jspCompiler.pars(jspCompiler.java:65) 
    at jspCompiler.main(jspCompiler.java:100) 
    at maintst.main(maintst.java:11) 
Caused by: java.lang.ClassNotFoundException: org.apache.tools.ant.util.FileUtils 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    ... 7 more 

어디에 문제가 있습니까? 내가 org.apache.tools.ant.util.FileUtils을 찾을 수 찾을 수 없습니다 Apache Tomcat의 코드를 찾아

편집

Maintst.java

import jspParser.jspCompiler; 
public class maintst { 
    public static void main(String[] args) throws Exception { 
    jspCompiler cmp=new jspCompiler(); 
    cmp.main(new String[]{"F:\\arshad droos\\Thesis\\secureBranch\\personalblog\\build","F:\\arshad droos\\Thesis\\secureBranch"}); 
    } 
} 
+0

예 이런 종류의 문제는 자바 파일을 찾는 일식이 없기 때문에 빠르게 발생합니다. 오히려 클래스 파일을 검색합니다. 제 생각에, 전체 프로젝트 A를 A.jar로 변환하고 프로젝트 B의 빌드 경로에 추가하면 성공할 수 있다고 생각합니다. –

+0

Thx 나는 그렇게합니다. 그러나 어떤 일도하지 않습니다. 같은 예외. – Mirzaei

+0

전체 프로젝트를 jar 파일로 변환 했습니까? 넌 어떻게 그걸 했니 ? 이 목적을 위해 어떤 도구를 사용 했습니까? –

답변

0

. 이클립스가 작동하기 때문에 이것은 아마도 프로젝트 A에이 파일이있는 빌드 경로에 몇 개의 jar가 있음을 의미합니다. 그것을 찾아서 프로젝트 B의 빌드 경로에 넣으면 모든 것이 작동합니다.

+0

예 프로젝트 A의 종속 항아리 [ant jar] 중 하나입니다. 개미 병은 항아리 파일을 넣지 않습니까? 나는 생성 된 A.jar 파일을 열고 .classpath 파일을 엽니 다. ** ** 및 A.jar에는 libs/ant-1.8.1.jar 파일이 포함되어 있습니다. – Mirzaei

+0

예 성공했습니다. 고맙습니다. 하지만 종속 항아리를 추가하지 않고 A.jar를 사용할 수 없습니까? – Mirzaei

+0

모든 종속성을 추가해야합니다. 어쩌면 프로젝트와 모든 종속성을 내보낼 수있는 일식을위한 방법이 있지만 그 사실을 알지 못합니다. – vainolo

0

이클립스는 fatjar플러그 인입니다. 플러그인 이클립스 (이클립스 플러그인 디렉토리에 지난 jar 파일 복사)에이 항아리를 설치 한 후 내보내기 메뉴에서 jar fat을 선택하십시오. 이 방법으로 수출 항아리의 크기가 크지 만 독립형.

감사합니다.

관련 문제