以下都是本人实际开发过程中遇到并通过网上查阅资料得到解决,欢迎互相交流学习,如有不同见解,请赐教。
1、关于eclipse解决java前台往后台传值乱码问题
解决步骤:
1.点击打开eclipse左侧导航栏中的Servers文件夹
2.双击打开server.xml文件
3.CTRL+F 搜索 8080 or 20000 定位到 <Connector> 标签
4.复制: useBodyEncodingForURI="true" 或者 URIEncoding="UTF-8"问题解决
注:推荐使用 useBodyEncodingForURI="true"
或
2、Tomcat容器运行静态资源(html、css)乱码问题
1、html页面设置编码 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
2、tomcat web.xml中设置(修改)编码
<mime-mapping>
<extension>htm</extension>
<mime-type>text/html;charset=UTF-8</mime-type>
</mime-mapping>
<mime-mapping>
<extension>html</extension>
<mime-type>text/html;charset=UTF-8</mime-type>
</mime-mapping>
3、Tomcat server.xml中设置编码
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
4、如果是IDE启动,设置启动参数 Debug configurations->tomat 8.0->argument
-Dfile.encoding=UTF8
如果是Tomcat服务形式启动,设置catalina.bat
set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%" -Dfile.encoding=UTF8
5、将文件用记事本或者notepad++打开,另存为UTF-8格式
以上5种基本可以告别tomcat中文乱码问题.
3、关于mysql 查询不能group by问题
问题如下:
原因:
MySQL 5.7.5和up实现了对功能依赖的检测。如果启用了only_full_group_by SQL模式(在默认情况下是这样),那么MySQL就会拒绝选择列表、条件或顺序列表引用的查询,这些查询将引用组中未命名的非聚合列,而不是在功能上依赖于它们。(在5.7.5之前,MySQL没有检测到功能依赖项,only_full_group_by在默认情况下是不启用的。关于前5.7.5行为的描述,请参阅MySQL 5.6参考手册。)
执行以下个命令,可以查看 sql_mode 的内容。
mysql> SHOW SESSION VARIABLES;
mysql> SHOW GLOBAL VARIABLES;
mysql> select @@sql_mode;
解决:
1、在 配置文件(my.cnf)中 修改(添加)sql_mode的配置为:
1.1、$ vim /usr/local/etc/my.cnf
(文件位置根据实际情况找,可用命令:find / -name my.cnf)
1.2、添加(修改如下代码)
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIV ISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
2、重启mysql服务
service mysqld restart
4、svn更换地址
项目svn地址改变之后该如何操作:
- 打开项目所在位置
- 右键选择tortoiseSVN,然后选择relocate(重新定位)
- 输入新的svn地址
5、写入MySQL报错超出 max_allowed_packet 的问题
MySQL会根据配置文件会限制server接受的数据包的大小。如果写入大数据时,因为默认的配置太小,插入和更新操作会因为 max_allowed_packet 参数限制,而导致失败。
错误信息如下:
查看当前配置:
mysql> show variables like 'max_allowed_packet';
解决方法:配置文件持久化修改
1、
vim /etc/my.cnf
[mysqld]
max_allowed_packet = 20M
2、
重启mysql服务
service mysqld restart
注:max_allowed_packet 最大值是1G(1073741824),如果设置超过1G,查看最终生效结果也只有1G;
mysql 1.6版本不会出现此问题,1.7会出现;
6、关于@Autowired注入失败或者注入为null的异常
- 检查Autowired的对象不要写成static的
- 检查被注入的对象是否已交给spring管理。
如:被注入的对象为引入的外部jar包中的对象,外部项目的spring 配置文件,需要在当前项目中加载。
7、关于maven打包失败的问题
提示找不到符号、找不到jar包、类等。一般情况下去pom文件maven依赖找是否引入相关jar
- 检查pom是否依赖了其他项目或jar包,将被依赖的项目重新编译打包->本项目重新编译、打包
- 如本项目代码中用了依赖项目中引入的依赖,其依赖不会自动引入到本项目(父项目中的依赖子项目会自动继承不需重新引入。依赖的项目中的jar不会继承),需要手动引入。
- 检查1 2都没问题,jar包已经引入,此时检查jar包版本,可能代码中用了过时的方法,而jar包为新版已经将过时方法删掉。此时调整jar包版本即可,更换较低版本的jar包。
8、关于HSF地址找不到的问题
请求hsf服务,报错hsf地址找不到。
- 检查服务分组生产者及消费者是否一致
- 检查服务端口是否冲突,端口为系统自动分配,冲突后删除配置列表记录,重启服务即可
- 是否存在多网卡,如果存在多网卡可以使用 -Dhsf.server.ip 来指定服务端的 IP。
查看服务端口(轻量级配置中心)
删除配置列表记录
指定服务器端ip
-Dhsf.server.ip=192.168.xxx.xxx
9、关于项目启动报错Error listenerStart
spring web 项目
项目启动报错,问题如下:
错误信息较少不好定位问题
尝试通过检查以下文件解决:
spring相关配置文件、mybatis配置文件、web.xml文件,可能出现找不到类的情况(原因:jar包引入错误、版本错误、过时类等)。如还不能解决尝试以下方法:
通过配置Tomcat的Log,让它记录更多的日志信息,方能进一步分析原因,
新建logging.properties文件放入项目resources文件夹下,文件内容如下:
handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################
org.apache.juli.FileHandler.level = FINE
org.apache.juli.FileHandler.directory = ${catalina.base}/logs
org.apache.juli.FileHandler.prefix = error-debug.
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
重新编译项目,运行,通过日志定位问题,例如定位出如下问题:
经检查是由于:jar包引用错误(版本错误),因spring我使用了较高版本。更换版本即可。
10、设置Mysql表名、字段设置不区分大小写
lower_case_table_names = 1
说明 0:区分大小写,1:不区分大小写
修改如下:
注:
修改前先停掉mysql服务 service mysqld stop
修改后重启mysql服务 service mysqld start
11、在maven install时抛出 “1.5不支持diamond运算符,请使用source 7或更高版本以启用diamond运算符”问题
Maven默认用的是JDK1.5去编译
diamond运算符,有的书翻译为菱形,有的书写的是钻石语法,指的是JDK1.7的一个新特性
List<String> list = new ArrayList<String>(); // 老版本写法
List<String> list = new ArrayList<>(); // JDK1.7写法
所以Maven默认使用JDK1.5去编译肯定是不认识这个东西的
你可以在pom.xml中加入下面的东西即可
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
或者你直接在pom.xml中配置Maven的编译插件也是可以的,类似下面这样
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
12、关于eclipse运行hsf项目启动异常
错误日志如下:
解决方案:
- 如果是spring boot项目,首先在pom文件中排除springboot自带的tomcat
- 修改AliTomcat运行配置
排除tomcat
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
修改AliTomcat运行配置
Web App Dir:target/m2e-wtp/web-resources
13、关于通过tomcat打开html静态页面中文显示乱码问题
修改tomcat配置:
conf/目录下,web.xml文件。
修改:添加charset=UTF-8
<mime-mapping>
<extension>htm</extension>
<mime-type>text/html;charset=UTF-8</mime-type>
</mime-mapping>
<mime-mapping>
<extension>html</extension>
<mime-type>text/html;charset=UTF-8</mime-type>
</mime-mapping>