2014-01-06 2 views
5

Ant 1.9.3 및 Tomcat 버전 8.0을 사용하고 있습니다. 나는 manager 자격 증명을 사용하여 아파치 톰캣에서 개미 deploy 타겟을 사용하여 웹 앱을 배포하고 있습니다. deploy 대상은 다음과 같은 예외와 함께 실패합니다 내가 tomcat-util.jar에있는 패키지 org\apache\tomcat\util\codec\binary\에서 클래스 Base64을 찾기 위해 노력하고, 내가 Ant 빌드에서 에코 검증 한 클래스 경로에Ant를 사용하여 웹 응용 프로그램을 배포하면 NoClassDefFoundError가 발생합니다.

java.lang.NoClassDefFoundError: 
org/apache/tomcat/util/codec/binary/Base64 
     at org.apache.catalina.ant.AbstractCatalinaTask.execute(AbstractCatalina 
Task.java:204) 
     at org.apache.catalina.ant.DeployTask.execute(DeployTask.java:196) 
     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. 
java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 
sorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:601) 
     at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav 
a:106) 
     at org.apache.tools.ant.Task.perform(Task.java:348) 
     at org.apache.tools.ant.Target.execute(Target.java:435) 
     at org.apache.tools.ant.Target.performTasks(Target.java:456) 
     at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393) 
     at org.apache.tools.ant.Project.executeTarget(Project.java:1364) 
     at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExe 
cutor.java:41) 
     at org.apache.tools.ant.Project.executeTargets(Project.java:1248) 
     at org.apache.tools.ant.Main.runBuild(Main.java:851) 
     at org.apache.tools.ant.Main.startAnt(Main.java:235) 
     at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280) 
     at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109) 
Caused by: java.lang.ClassNotFoundException: org.apache.tomcat.util.codec.binary 
.Base64 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
     ... 19 more 

파일.

문제를 해결할 수 없습니다.

+0

문제를 해결하기 위해 우리가 사용하고있는 ANT를 제공해야합니다. 항아리가 클래스 경로에 있음을 나타내지 만 JVM 오류는 그렇지 않다고 표시합니다. 나는 그것이 바람둥이 "배포"작업이 빌드에서 선언 된 방식으로 문제가 의심됩니다. –

+0

1.9.4에서도이 문제가 발생했습니다. 아래 텍스트를 path.xml 파일의 build.xml 파일에 추가했지만 이전과 똑같은 오류가 발생했습니다. tomcat-util.jar 파일의 내부를 보는 방법을 잘 모르겠다. OP가했던 것처럼, Java 바이트 코드라고 생각하지 않고서 어떻게 검증해야하는지 모르겠다. 사용하는 튜토리얼의 [link] (http://docs.spring.io/docs/Spring-MVC-step-by-step/part1.html)는 다음과 같습니다. 내가 위조 한 몇 가지 미묘한 버전 오류가 있습니다. 이 것은 사용자가 '개미 목록'을 호출 할 것을 요구할 때 맨 아래쪽으로옵니다. – kurofune

답변

1

다음과 같이 클래스 경로에 tomcat-util.jar을 추가했는지 확인하십시오. 나는 Tomcat website에 자습서를 다음 있었고, 난이 ant install을 실행하려고 할 때 나는 같은 NoClassDefFoundError 문제로 실행

:

<path id="catalina-ant-classpath"> 
    <!-- We need the Catalina jars for Tomcat --> 
    <!-- * for other app servers - check the docs --> 
    <fileset dir="${appserver.lib}"> 
     <include name="catalina-ant.jar"/> 
     <include name="tomcat-util.jar"/> 
    </fileset> 
</path> 
+0

안녕하세요,이 XML 코드를 어느 파일에 넣어야합니까? – leaf

6

이런 경우에 누군가가 같은 문제를 내가 가졌다로 실행됩니다.

튜토리얼

은 당신이 당신의 개미 설치 lib 디렉토리 (개미 사용자 지정 작업에 대한 구현 코드를 포함하는) $CATALINA_HOME/lib/catalina-ant.jar 1을 복사 할 필요가 있음을 언급하고있다.

tomcat-util.jar과 동일한 작업을 수행해야합니다. tomcat-util.jar을 Ant 디렉토리에 복사하자 마자 일이 시작되었다 (source).

1$CATALINA_HOME

은 Tomcat 설치, 예를 들어,의 디렉토리입니다 /usr/share/tomcat8

관련 문제