我有在 spring boot 2.0.4 上启动的网络应用程序。依赖项也存在 taglibs-standard-impl 1.2.5。
我的项目结构如下。
web/
├── src
├── main
│ ├── java
│ │
│ ├── resources
│ │ ├── i18n
│ │ ├── static
│ │ └── templates
│ └── webapp
│ ├── META-INF
│ └── WEB-INF
└── test
└── java
在 WEB-INF 中,我有一个带有一个自定义 tld 的文件夹 tld。我的主要课程:
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
public class WebMain extends SpringBootServletInitializer implements WebApplicationInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(WebMain.class);
}
public static void main(String[] args) {
SpringApplication.run(WebMain.class, args);
}
}
问题如下,基本上影响开发时间。在我的主要 freemarker 模板中,我包含了标签库,例如:
<#assign form=JspTaglibs["http://www.springframework.org/tags/form"]/>
<#assign spring=JspTaglibs["http://www.springframework.org/tags"]/>
<#assign common = JspTaglibs["/WEB-INF/tld/common.tld"]>
问题是,通过 spring boot 启动器在 intellij IDEA 中运行时,这些 taglib 无法正确启动。如果我在Tomcat中部署war或者像java -jar web.war这样没有intellij直接运行,一切都很好,taglibs被加载。
我在调试的时候了解到,问题是如果使用IntellijIdea的spring boot启动器,在TaglibFactory类中找不到WEB-INF文件夹。在其中,任何通过引起的调用
servletContext.getResourcePaths (path);
其中路径以“/WEB-INF”开头,始终返回null,因此无法将任何内容加载到tldLocations。Intellij 有 4 种类型的缩短命令行:无、JAR 清单、类路径文件和用户本地默认值:无。我试图全部使用它们,但一切都还保留着。例如,JAR 清单生成这样的命令:
/usr/lib/jvm/java-8-oracle/bin/java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:40359,suspend=y,server=n -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -javaagent:/home/birthright/IDEA/lib/rt/debugger-agent.jar=file:/tmp/capture128.props -Dfile.encoding=UTF-8 -classpath /tmp/classpath1030746450.jar com.birthright.WebMain
有没有可能解决这个问题?
慕勒3428872
慕盖茨4494581
相关分类