我有一个spring-boot项目,代码如下:
import org.springframework.web.context.request.NativeWebRequest;
import javax.servlet.http.HttpServletResponse
foo(NativeWebRequest req){
HttpServletResponse res = req.getNativeResponse(HttpServletResponse.class);
res.setCharacterEncoding("UTF-8");
}
一切都很好,直到我添加了速度相关性:
compile group: 'org.apache.velocity', name: 'velocity', version: '1.7'
compile group: 'org.apache.velocity', name: 'velocity-tools', version: '2.0'
现在我得到:
在Eclipse中:The method setCharacterEncoding(String) is undefined for the type HttpServletResponse
并且在gradle bootJar
:中
.../SomeFile.java:12: error: cannot find symbol
res.setCharacterEncoding("UTF-8");
^
symbol: method setCharacterEncoding(String)
location: variable res of type HttpServletResponse
因此,我认为导入HttpServlet响应的库的版本在某种程度上受到了这些依赖关系的影响。
我的春季启动插件是:id 'org.springframework.boot' version '2.3.2.RELEASE'
同一项目中的所有依赖项都是:
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
// https://mvnrepository.com/artifact/org.apache.velocity/velocity
compile group: 'org.apache.velocity', name: 'velocity', version: '1.7'
// https://mvnrepository.com/artifact/org.apache.velocity/velocity-tools
compile group: 'org.apache.velocity', name: 'velocity-tools', version: '2.0'
}
从gradle dependencies
中,我可以看到速度集javax.servlet:servlet-api:2.3
,但如果没有速度依赖关系,javax.servlet
根本不会出现在渐变依赖关系中,所以我不知道以前的版本是什么。
通过注释,我可以确定implementation 'org.springframework.boot:spring-boot-starter-web'
提供了javax.servlet(如果速度不是依赖项的话(。(根据compileClasspath
中gradle dependencies
2.3.2版和implementation
中(n)
版(
我也尝试了无速度的gradle dependencyInsight --configuration compile --dependency javax.servlet:servlet-api
,但得到了No dependencies matching given input were found in configuration 'compile'
。
我认为这些问题非常接近,但我仍然不确定如何在gradle中进行:
setCharacterEncoding问题
Apache Velocity+Servlet 3.0
用替换compile group: 'org.apache.velocity', name: 'velocity-tools', version: '2.0'
compile('org.apache.velocity:velocity-tools:2.0') {
exclude group: 'javax.servlet', module: 'servlet-api'
}
为我工作。