使用 FTP 将 intellij maven 项目部署到 azure Web 应用程序,出现 500 服务器错误

Posted

技术标签:

【中文标题】使用 FTP 将 intellij maven 项目部署到 azure Web 应用程序,出现 500 服务器错误【英文标题】:Deploying intellij maven project to azure web apps using FTP, getting a 500 server error 【发布时间】:2019-04-28 23:54:51 【问题描述】:

我一直在尝试使用 FTP 将 intellij java 项目部署到 Azure Web Apps。该项目是一个使用 Jetty 和 Maven 的简单 REST api。 在本地运行 api 工作正常。

我使用 intellij 为该项目构建了一个 .war 工件。 .war artifact build in intellij

并使用 FileZilla 将其部署到 Azure Web App FileZilla

The azure settings

但是当我尝试访问我的 azure 应用程序时,只需转到 URL(在浏览器中并使用带有简单 GET 请求的邮递员),我就会收到错误 500 服务器错误。

HTTP 错误 500 访问 / 时出现问题。原因:

Server Error

原因: org.apache.jasper.JasperException: PWC6345: 调用 javac 时出错。需要完整的 JDK(不仅仅是 JRE) 在 org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:92) 在 org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:378) 在 org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:119) 在 org.apache.jasper.compiler.Jsr199JavaCompiler.compile(Jsr199JavaCompiler.java:208) 在 org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:384) 在 org.apache.jasper.compiler.Compiler.compile(Compiler.java:453) 在 org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:625) 在 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375) 在 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473) 在 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 在 org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:696) 在 org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:526) 在 org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) 在 org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:586) 在 org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221) 在 org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1110) 在 org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:453) 在 org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183) 在 org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1044) 在 org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 在 org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:261) 在 org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:101) 在 org.eclipse.jetty.servlet.DefaultServlet.doGet(DefaultServlet.java:552) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:687) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 在 org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:696) 在 org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1568) 在 org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:164) 在 org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1539) 在 org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:524) 在 org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) 在 org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:568) 在 org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221) 在 org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1110) 在 org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:453) 在 org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183) 在 org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1044) 在 org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 在 org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:199) 在 org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109) 在 org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) 在 org.eclipse.jetty.server.Server.handle(Server.java:459) 在 org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:280) 在 org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:229) 在 org.eclipse.jetty.io.AbstractConnection$1.run(AbstractConnection.java:505) 在 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:607) 在 org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:536) 在 java.lang.Thread.run(未知来源) 由码头提供支持://

当我尝试访问我的端点时,我收到错误 404 Not Found。

HTTP 错误 404 访问 /login 时出现问题。原因:

Not Found

由 Jetty 提供支持://

Code with paths

我有点不知所措了。有大佬知道怎么解决吗?

【问题讨论】:

【参考方案1】:

我猜您没有更改门户中的应用程序设置,您需要更改设置以适合您刚刚部署的应用程序,您需要将 java 版本设置为您想要的。 reference this image 您还可以将虚拟应用程序和目录更改为“site\wwwwroot\webapps”以降低失败的风险。希望它受益。

【讨论】:

以上是关于使用 FTP 将 intellij maven 项目部署到 azure Web 应用程序,出现 500 服务器错误的主要内容,如果未能解决你的问题,请参考以下文章

放心 IntelliJ IDEA 中的 3.0.3 maven 依赖项不起作用

如何在 Intellij Idea 中找出未使用的依赖项 Maven

如何让 IntelliJ IDEA 从 Maven 更新我的依赖项?

如何将 Maven 模块添加到 IntelliJ?

为啥 Intellij 在 pom.xml 中找不到任何 Maven 依赖项?

IntelliJ 可以显示像 Eclipse 这样的可搜索的 maven 依赖项吗?