簡體   English   中英

Intellij運行配置Spring Boot與Maven問題

[英]Intellij Run Configuration Spring Boot vs Maven Issues

我正在嘗試使用Intellij IDEA運行我的Spring Boot項目。 這個項目的類型是Spring MVC,這意味着它在路徑main/webapp/WEB-INF/jsp有JSP文件。

我的application.properties具有以下設置:

spring.view.prefix=/WEB-INF/jsp/
spring.view.suffix=.jsp

當我在Intellij中運行項目作為“Spring Boot Run Configuration”時,服務器無法識別JSP文件的路徑。 這是我得到的消息:

在此輸入圖像描述 ž

如果我使用命令spring-boot:run帶有“Maven Run Configuration”的項目spring-boot:run一切正常。

我不知道為什么會這樣。 每個運行配置的項目代碼和設置都相同。

您可以嘗試這個項目(而不是我的項目)來理解我的意思https://github.com/mariuszs/spring-boot-web-jsp-example

我的項目也是如此。 我應該注意,當項目使用Spring Boot Run Configuration運行時,我確實在控制台中看到控制器已正確映射。

2017-06-28 08:29:13.906  INFO 10308 --- [           main] o.s.w.s.h.SimpleUrlHandlerMapping        : Mapped URL path [/login] onto handler of type [class org.springframework.web.servlet.mvc.ParameterizableViewController]

2017-06-28 08:29:13.835  INFO 10308 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/login],methods=[GET]}" onto public java.lang.String com.intuit.mintbills.controllers.generic.LoginController.getLoginPage()

這是IntelliJ和Spring啟動的問題。 你應該檢查以下事項:

Web方面

確保已啟用Web構面。 示例項目沒有web.xml文件,因此,IntelliJ不會獲取src/main/webapp 您可以將虛擬web.xml文件添加到src/main/webapp/WEB-INF並重新導入項目,也可以手動添加Web facet並正確配置它。 如果正確配置了Web構面,則應在webapp文件夾中看到藍色圓圈。

虛擬web.xml文件的示例:

<?xml version="1.0" encoding="UTF-8"?>
<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">
</web-app>

這是src/main/webapp文件夾中的“藍點”:

項目結構

提供依賴項

IntelliJ的另一個問題是提供的依賴項未正確獲取。 您通常可以通過打開“ 模塊”並選擇“ 依賴關系”選項卡來打開“ 項目結構...”來解決此問題。 在這里,您可以覆蓋依賴項的范圍,因此在您的情況下,我建議將tomcat-embed-jasperecjCompile

依賴配置

我最近沒有這樣做,但每次更改pom.xml都可能會覆蓋它。 在這種情況下,我建議覆蓋你的pom.xml<scope>

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
</dependency>

如果您計划在Web容器(例如外部Tomcat)上部署應用程序,則可能需要使用配置文件,否則這可能會導致沖突,因為這些依賴項是由Web容器提供的。

JSP限制

還建議將打包更改為WAR,因為使用帶有JAR文件的JSP有一些已知的限制 引用文檔:

運行使用嵌入式servlet容器的Spring Boot應用程序(並打包為可執行存檔)時,JSP支持存在一些限制。

  • 使用Tomcat它應該可以使用war包裝,即可執行的war會起作用,並且也可以部署到標准容器(不限於但包括Tomcat)。 由於Tomcat中的硬編碼文件模式,可執行jar將無法工作。
  • 使用Jetty它應該可以使用war包裝,即可執行的war會起作用,並且也可以部署到任何標准容器。
  • Undertow不支持JSP。
  • 創建自定義error.jsp頁面不會覆蓋錯誤處理的默認視圖,而應使用自定義錯誤頁面。

我通過在運行配置中將工作目錄設置為$ MODULE_DIR $來解決了這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM