2012-06-28 1 views
0

검색 웹 응용 프로그램을 실행하려고하는데 모든 백엔드 작업을 수행하기 위해 다른 Java 프로젝트를 사용해야합니다. 프로젝트를 jar 파일로 내 보낸 다음 동적 웹 프로젝트 프로젝트에 추가했습니다. 가장 먼저 시도한 것은 Properties> Java Build Path에서 "Add external jars"였다. 이것은 작동하지 않았다. 그래서 나는 또한 WEB-INF/lib에 jar를 추가하려고 시도했다. 웹 응용 프로그램에서 해당 프로젝트를 사용할 수 있도록 jar 파일을 올바르게 추가하려면 어떻게합니까?jar 파일의 클래스를 사용할 때 NoClassDefFoundError

는 구체적으로이 오류 내가 얻을 :

message 

description The server encountered an internal error() that prevented it from fulfilling this request. 

exception 

javax.servlet.ServletException: Servlet execution threw an exception 

근본 원인 근본 원인의 전체 스택 추적은 아파치 톰캣/6.0.35 로그에서 사용할 수 있습니다

java.lang.NoClassDefFoundError: org/apache/accumulo/core/client/Instance 
com.afspq.model.Results.getResults(Results.java:46) 
com.afspq.web.ProcessQuery.doGet(ProcessQuery.java:31) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
root cause 

java.lang.ClassNotFoundException: org.apache.accumulo.core.client.Instance 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680) 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) 
com.afspq.model.Results.getResults(Results.java:46) 
com.afspq.web.ProcessQuery.doGet(ProcessQuery.java:31) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 

참고.

+0

이 경우에만 런타임 오류가 발생합니까? – BlackVegetable

+0

예, 이것은 런타임 오류입니다. 또한, "Problems"탭에는 다음과 같은 메시지가 있습니다 :'Classpath entry path/to/my/jar는 export되거나 공개되지 않습니다. 런타임 ClassNotFoundExceptions가 발생할 수 있습니다. ' –

+0

어떤 IDE를 사용하고 있습니까? – BlackVegetable

답변

0

이것은 일종의 고통스러운 과정 이었지만 Accumulo, Hadoop 및 Zookeeper의 모든 jar 파일을 수동으로 추가해야했습니다. jar 파일을 두 위치에 추가해야했습니다. 하나는 빌드 경로입니다 (웹 프로젝트> 특성> Java 빌드 경로> 외부 jar 추가 마우스 오른쪽 단추 클릭). 다른 하나는 웹 프로젝트의 WebContent/WEB-INF/lib 폴더입니다. 이것은 나를 위해 그것을 고정. 어떤 이유로 maven은 pom.xml에 모두 지정되었지만 종속성을 추가하지 않았습니다.

0

나는 당신의 메이븐 pom.xml 파일에 다음을 추가합니다 :

<dependency> 
    <groupId>org.apache.accumulo</groupId> 
    <artifactId>accumulo-core</artifactId> 
    <version>1.4.0</version> 
</dependency> 

및 NOT 이클립스 내에서 추가. pom.xml은 이클립스가 아닌 진실이다.

바로 명령 줄에 가서 모든 것을 확인하려면

mvn clean package 

가 없는지 확인되어 있는지 확인하는 바람둥이로 만들어 전쟁을 배포합니다.

+0

이미 pom.xml에 필요한 모든 종속성이 있습니다. –

+1

불행히도 스택 추적은 다른 점을 말해줍니다. 너의 치근단없이! – khmarbaise