Eclipse+Gradle编写项目时,找不到JSP文件
在把Eclipse JEE更新到2019-09之后,打开之前可以运行的,使用Gradle配置的JSP项目运行时,发现所有页面都变成了404。前往Eclipse配置的tomcat临时文件夹查看,发现所写的jsp文件全部没有复制过去。然后在网上搜索发现,是由于JSP搜索路径没有配置好的问题。
https://guides.gradle.org/building-java-web-applications/
从Gradle的官方教程不难发现,其默认配置的JSP根目录在src/main/webapp
下,而不是Eclipse所使用的WebContent
。
https://stackoverflow.com/questions/18273184/how-to-set-webappdirname-in-gradle
依照这个方法,使用webAppDirName
(或者全写为project.webAppDirName
)参数指定JSP包的根目录后,方可使其正常搜索WebContent
目录下的JSP文件。经过测试,这个参数与是否使用了war
插件似乎无关,也就是说,不使用war
插件也不能正常识别WebContent
目录下的JSP文件,而这时webAppDirName
参数是否有效,由于未经测试,则不得而知了。
这个问题与IDE的版本是有关的,在Eclipse JEE 2017-12中可以正常使用,升级到2019-09就不行了。
在设置完webAppDirName
之后,再次使用Gradle进行编译的时候,又可能会遇到找不到Servlet的问题。原因推测是在指定JSP目录的时候,破坏了对Java源代码目录的设置。可以注意到Gradle编译的输出项,其中compileJava一项显示的是
NO-SOURCE`,显然就是没找到写好的Java源代码文件。
https://stackoverflow.com/questions/31077844/add-another-java-source-directory-to-gradle-script 依照这个方法,显示指定Java源文件的目录后,再重新使用Gradle编译即可解决问题。
添加的参考配置如下:
sourceSets {
main {
java {
srcDir 'src'
}
}
}
该配置可用于直接在src
目录下建立包名,即使用Eclipse传统的Dynamic Web App向导建立的目录结构。