Kotlin类servlet引发NoClassDefFoundError

Kotlin类servlet引发NoClassDefFoundError,kotlin,intellij-idea,servlets,Kotlin,Intellij Idea,Servlets,在IntelliJ IDE中的一个示例Java servlet项目中,我在Kotlin中创建了这个类: @WebServlet(name = "TwitterAPIServlet", description = "This is used to test the servlet api", urlPatterns = ["/twitterAPIServlet"]) class TwitterAPIServlet : HttpServlet() { @Throws(IOException:

在IntelliJ IDE中的一个示例Java servlet项目中,我在Kotlin中创建了这个类:

@WebServlet(name = "TwitterAPIServlet", description = "This is used to test the servlet api", urlPatterns = ["/twitterAPIServlet"])
class TwitterAPIServlet : HttpServlet() {
    @Throws(IOException::class)
    override fun doGet(req: HttpServletRequest, resp: HttpServletResponse) {

        // Print answer
        val out = resp.writer
        out.println("Request Done : </br>")
    }
}
当我在Java中尝试相同的代码时,它正在工作:

@WebServlet(
        name = "TwitterAPIServlet",
        description = "This is used to test the servlet api",
        urlPatterns = "/twitterAPIServlet")
public class TwitterAPIServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        PrintWriter out = resp.getWriter();
        out.println("Request Done : </br>");
    }
}
@WebServlet(
name=“TwitterAPIServlet”,
description=“用于测试servlet api”,
urlPatterns=“/twitterAPIServlet”)
公共类TwitterAPIServlet扩展了HttpServlet{
@凌驾
受保护的void doGet(HttpServletRequest-req、HttpServletResponse-resp)引发IOException{
PrintWriter out=resp.getWriter();
out.println(“请求完成:
”; } }

如何使我的Kotlin代码正常工作?

最可能的问题是,生成的WAR中不包括Kotlin的标准库(或者,如果运行分解的应用程序,它不在类路径上)。确保在构建中包含它

Gradle的说明可以在官方示例库中找到:

Maven与此类似:

如果是纯IDEA(尽管建议使用上述构建工具之一),请检查项目设置:

您应该看到Kotlin的stdlib包含在工件中:

@WebServlet(
        name = "TwitterAPIServlet",
        description = "This is used to test the servlet api",
        urlPatterns = "/twitterAPIServlet")
public class TwitterAPIServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        PrintWriter out = resp.getWriter();
        out.println("Request Done : </br>");
    }
}