2016-01-31 154 views
0

我想將編譯的Servlet類部署到Apache Tomcat服務器8.0.30上。在Tomcat上部署Servlet 8.0.30

,但我得到以下異常:

javax.servlet.ServletException: Error instantiating servlet class HelloWorld 

    java.lang.ClassNotFoundException: HelloWorld 

我的tomcat webapps/ROOT/文件夾中不包含類文件夾,所以我創建了一個與複製HelloWorld.class進去。我在web.xml添加了以下幾行:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
         http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
    version="3.1" 
    metadata-complete="true"> 

    <display-name>Welcome to Tomcat</display-name> 
    <description> 
    Welcome to Tomcat 
    </description> 
<servlet> 
    <servlet-name>HelloWorld</servlet-name> 
    <servlet-class>HelloWorld</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>HelloWorld</servlet-name> 
    <url-pattern>/HelloWorld</url-pattern> 
</servlet-mapping> 
</web-app> 

誰能告訴我我做錯了什麼?

@wero:這是我的HelloWorld.java的內容:

// Import required java libraries 
import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 

// Extend HttpServlet class 
public class HelloWorld extends HttpServlet { 

    private String message; 

    public void init() throws ServletException 
    { 
     // Do required initialization 
     message = "Hello World"; 
    } 

    public void doGet(HttpServletRequest request, 
        HttpServletResponse response) 
      throws ServletException, IOException 
    { 
     // Set response content type 
     response.setContentType("text/html"); 

     // Actual logic goes here. 
     PrintWriter out = response.getWriter(); 
     out.println("<h1>" + message + "</h1>"); 
    } 

    public void destroy() 
    { 
     // do nothing. 
    } 
} 

回答

0

當Tomcat已經開始有在你的應用程序不class文件。 Tomcat正在啓動時部署,或者在運行時手動部署。之後,上下文應該重新加載。你不能只將你的類複製到tomcat webapps文件夾而不加載它們。

閱讀Tomcat docs how to deploy your application

部署是用於安裝一個Web應用程序 (無論是第三方WAR或您自己的自定義Web應用程序 )到Tomcat服務器的過程的術語。

Web應用程序部署可以在多個Tomcat服務器內以多種方式 完成:

  • 靜態(Web應用程序是安裝在Tomcat啓動前)
  • 動態(通過直接操縱已部署的Web應用程序(依靠自動部署功能)或遠程通過使用Tomcat管理器Web應用程序

Tomcat管理器是一個Web應用程序t可以交互使用 (通過HTML GUI)或以編程方式(通過基於URL的API)部署和管理Web應用程序。

依靠 Manager Web應用程序執行部署的方法有很多。 Apache Tomcat爲Apache Ant 構建工具提供任務。 Apache Tomcat Maven插件項目提供了與Apache Maven的集成 。還有一個稱爲客戶端部署者的工具, 可以從命令行使用,並提供額外的功能,例如編譯和驗證Web應用程序爲 以及將Web應用程序打包爲Web應用程序資源(WAR) 文件。

0

您需要將文件放入正確的位置。 Java類文件需要放入WEB-INF/classes:

webapps/ROOT/WEB-INF/web.xml 
webapps/ROOT/WEB-INF/classes/HelloWorld.class 

然後啓動Tomcat並查看Tomcat日誌中是否有錯誤。

+0

我把文件放到你提到的地方,然後我重新啓動了服務器,但仍然出現錯誤:請求的資源不可用。 – user1858851

+0

@ user1858851然後顯示'HelloWorld.java' – wero

+0

請在編輯中找到HelloWorld.java。 – user1858851

0

明白了。我創建的classes文件夾是「C」,其中tomcat期望「c」這樣的錯誤。