Kotlin类servlet引发NoClassDefFoundError

问题描述 投票:3回答:1

在我的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>")
    }
}

[当我尝试用我的.jsp页面调用它时,出现此错误:

2020-05-10 15:30:34.218:WARN:oejs.HttpChannel:qtp60559178-27: /twitterAPIServlet
java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
    at main.java.co.rezo.api.internal.v1.TwitterAPIServlet.doGet(TwitterAPIServlet.kt)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)

[当我尝试用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>");
    }
}

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

kotlin intellij-idea servlets
1个回答
0
投票

最有可能的问题是,Kotlin的标准库未包含在生成的WAR中(或者,如果您运行爆炸的应用程序,则不在类路径中)。确保将其包含在您的版本中。

有关Gradle的说明,请参见官方示例存储库:kotlin-examples

行家相似:https://kotlinlang.org/docs/reference/using-maven.html

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

enter image description here

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

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.