2016-09-14 3 views
-1

Apache Tomcat을 처음 사용하고 간단한 서블릿 프로그램을 실행하려고하지만 클래스가 없습니다.클래스를 찾을 수 없습니다. Apache Tomcat

자바 파일 :

package com.mkyong; 

import java.io.IOException; 
import java.io.PrintWriter; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class ServletDemo1 extends HttpServlet { 

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { 
     PrintWriter out = response.getWriter(); 
     out.println("<html>"); 
     out.println("<body>"); 
     out.println("<h1>Hello Servlet Get</h1>"); 
     out.println("</body>"); 
     out.println("</html>"); 
    } 
} 

배포 파일 :

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 

    <servlet> 
     <servlet-name>myServlet</servlet-name> 
     <servlet-class>com.mkyong.ServletDemo1</servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>myServlet</servlet-name> 
     <url-pattern>/Demo1</url-pattern> 
    </servlet-mapping> 
</web-app> 

로그 :

java.lang.NoClassDefFoundError: com/mkyong/ServletDemo1 (wrong name: ServletDemo1) 
java.lang.ClassLoader.defineClass1(Native Method) 
java.lang.ClassLoader.defineClass(ClassLoader.java:800) 
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2904) 
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1173) 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1681) 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:461) 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) 
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
java.lang.Thread.run(Thread.java:745) 

답변

-1

당신의 .class (기억을 .class) 파일을 Tomcat의 클래스 경로에 있어야합니다. 그것을 확인하십시오.
Tomcat startup.bat는 classpath가 설정된 catalina.bat를 호출합니다.
Catalina.bat는

echo Using CLASSPATH:  "%CLASSPATH%" 

이것은 당신이 startup.bat를/.sh로 호출되는 명령 프롬프트 창에 클래스 경로를 인쇄합니다 ... 라인을 가지고있다. 이것을 사용하여 파일을 검색하십시오.
IDE 프로젝트 구성이 .class를 생성하고 필요한 위치에 넣기 위해 올바르게 설정되지 않았습니다. Maven에서는 대상/클래스로 이동해야합니다.
전쟁 배포 후 문제가 발생하면 war 및 check classes 폴더의 압축을 풉니 다. 찾을 수없는 경우 빌드 도구가 올바르게 설정되지 않았습니다.

0

해결되었습니다. 클래스 패스에 추가 할 jar 파일이 더 필요했습니다. 덕분에 많은 도움이되었습니다.

관련 문제