2017-11-29 13 views
0

ので、私は今、いくつかの時間のためにJSPを実行しようとしてきた、と私はkotlinとMaven、私はいくつかの問題を抱えているとそれを使用したいライティングJSPのmavenとkotlin中 - エラーインスタンス化するサーブレットクラス、ClassNotFoundExceptionが

それは私のファイルで、ここで、ClassNotFoundExceptionがスローされます。

  • web.xml

    <web-app> 
        <display-name>Archetype Created Web Application</display-name> 
        <servlet> 
         <servlet-name>Servlet</servlet-name> 
         <servlet-class>com.erezbiox1.Servlet</servlet-class> 
        </servlet> 
        <servlet-mapping> 
         <servlet-name>Servlet</servlet-name> 
         <url-pattern>/test</url-pattern> 
        </servlet-mapping> 
    </web-app> 
    
  • pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
        <modelVersion>4.0.0</modelVersion> 
        <groupId>com.erezbiox1</groupId> 
        <artifactId>KotlinJsp</artifactId> 
        <packaging>war</packaging> 
        <version>1.0</version> 
        <name>KotlinJsp</name> 
        <url>http://maven.apache.org</url> 
        <dependencies> 
        <dependency> 
         <groupId>junit</groupId> 
         <artifactId>junit</artifactId> 
         <version>3.8.1</version> 
         <scope>test</scope> 
        </dependency> 
        <dependency> 
         <groupId>org.jetbrains.kotlin</groupId> 
         <artifactId>kotlin-stdlib</artifactId> 
         <version>1.2.0</version> 
        </dependency> 
         <dependency> 
          <groupId>javax.servlet</groupId> 
          <artifactId>servlet-api</artifactId> 
          <version>2.5</version> 
         </dependency> 
        </dependencies> 
        <build> 
        <finalName>KotlinJsp</finalName> 
        <plugins> 
         <plugin> 
         <groupId>org.jetbrains.kotlin</groupId> 
         <artifactId>kotlin-maven-plugin</artifactId> 
         <version>1.2.0</version> 
         <executions> 
          <execution> 
          <id>compile</id> 
          <phase>compile</phase> 
          <goals> 
           <goal>compile</goal> 
          </goals> 
          </execution> 
         </executions> 
         </plugin> 
        </plugins> 
        </build> 
    </project> 
    
  • Servlet.kt

    // Tried with, and without this: 
    @file:JvmName("Servlet") 
    
    package com.erezbiox1 
    
    import javax.servlet.http.HttpServlet 
    import javax.servlet.http.HttpServletRequest 
    import javax.servlet.http.HttpServletResponse 
    
    class Servlet : HttpServlet(){ 
    
    override fun doGet(req: HttpServletRequest, resp: HttpServletResponse) { 
        resp.writer.println("<h1>IT WORKS!</h1>") 
        resp.writer.flush() 
    } 
    
    } 
    

、ここでプロジェクト構造である: Project Structure

ここではerrorです:

// Exception: 

javax.servlet.ServletException: Error instantiating servlet class com.erezbiox1.Servlet 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421) 
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070) 
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) 
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    java.lang.Thread.run(Thread.java:745) 

// Root Cause: 

java.lang.ClassNotFoundException: com.erezbiox1.Servlet 
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) 
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421) 
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070) 
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) 
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    java.lang.Thread.run(Thread.java:745) 

それは可能ですか? jsp、kotlinとmavenの両方? ありがとう!

+0

私はよく慣れていませんが、なぜあなたのクラスは 'resources'ですか?私はそれが正しい場所だとは思わない – Moira

+0

@ 1blustone私はかなり確信しています。 – Erezbiox1

+0

@ 1blustoneプロジェクトを作成したとき、リソースフォルダは以前のjspプロジェクトのsrcフォルダとまったく同じ場所にあり、プロジェクトにはsrcフォルダがなかったので、ここにはあると仮定しました。 [これは今プロジェクトの構造です](https://i.imgur.com/PS9hOpF.png)、それが動作します!、これを答えとして投稿してください、ありがとう! – Erezbiox1

答えて

0

プロジェクト内のクラスはresourcesフォルダーにあります。

これは、必要な場所ではありません。このフォルダは、リソース用にのみ使用されています。

新しいフォルダを作成し、それをソースルートとしてマークし、代わりにそのフォルダを使用します。

関連する問題