问题
java.lang.IllegalArgumentException: Invalid character found in the request target [/alterDir?filePath2=hdfs://192.168.159.101:9000/li/[%E7%BB%BC]%E7%BB%99%E6%88%91%E9%80%92%E7%81%AB.txt&altername=q ]. The valid characters are defined in RFC 7230 and RFC 3986
问题分析
我很有可能就是比较新的Tomcat所以才会出现这个问题
高版本tomcat中的新特性:就是严格按照 RFC 3986规范进行访问解析,RFC3986 规范定义Url中只允许英文,数字,特殊字符。否则接收会出现乱码,中文参数报错情况
解决方法
启动类中添加@Bean webServerFactory 方法
tomcat9 以上也可用
找到Application这个类,找不到的话点击
点击Edit Configuration这个选项
在这找到自己的启动类名称,在项目中找到这个类
如果没有就点左上角加号新建一个
在类中加入
@Bean
public TomcatServletWebServerFactory webServerFactory() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
@Override
public void customize(Connector connector) {
connector.setProperty("relaxedPathChars", "\"<>[\\]^`{|}");
connector.setProperty("relaxedQueryChars", "\"<>[\\]^`{|}");
}
});
return factory;
}
如下路
这样就OK了,重启一下试试。
我的问题就是这样解决的,如果还是不行就再想办法解决吧。