开发遇到的各种问题和解决方法;持续更新......

       以下都是本人实际开发过程中遇到并通过网上查阅资料得到解决,欢迎互相交流学习,如有不同见解,请赐教。

 

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地址改变之后该如何操作:

 

  1. 打开项目所在位置
  2. 右键选择tortoiseSVN,然后选择relocate重新定位
  3. 输入新的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的异常

 

  1. 检查Autowired的对象不要写成static的
  2. 检查被注入的对象是否已交给spring管理。

如:被注入的对象为引入的外部jar包中的对象,外部项目的spring 配置文件,需要在当前项目中加载。

 

7、关于maven打包失败的问题

 

提示找不到符号、找不到jar包、类等。一般情况下去pom文件maven依赖找是否引入相关jar

 

  1. 检查pom是否依赖了其他项目或jar包,将被依赖的项目重新编译打包->本项目重新编译、打包
  2. 如本项目代码中用了依赖项目中引入的依赖,其依赖不会自动引入到本项目(父项目中的依赖子项目会自动继承不需重新引入。依赖的项目中的jar不会继承),需要手动引入。
  3. 检查1 2都没问题,jar包已经引入,此时检查jar包版本,可能代码中用了过时的方法,而jar包为新版已经将过时方法删掉。此时调整jar包版本即可,更换较低版本的jar包。

 

 

8、关于HSF地址找不到的问题

 

请求hsf服务,报错hsf地址找不到。

 

  1. 检查服务分组生产者及消费者是否一致
  2. 检查服务端口是否冲突,端口为系统自动分配,冲突后删除配置列表记录,重启服务即可
  3. 是否存在多网卡,如果存在多网卡可以使用 -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项目启动异常

 

错误日志如下:

解决方案:

 

  1. 如果是spring boot项目,首先在pom文件中排除springboot自带的tomcat
  2. 修改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>

 

 

猜你喜欢

转载自blog.csdn.net/aiunng/article/details/89045713