SpringMVC+tomcat json接口开发,IDE IntelliJ idea遇到的问题汇总
一、 Linux下Tomcat安装
官方下载最新的安装包 Core 下tar.gz格式的http://tomcat.apache.org/download-90.cgi,解压缩到/usr/local/tomcat,启动/关闭命令/usr/local/tomcat/bin/startup.sh 、/usr/local/tomcat/bin/shutdown.sh 。
安装前需要先安装jdk环境。yum安装了64位的通用jdk(s..2-jdk.x86_64), 在shutdown tomcat的时候提示
Exception in thread "main"java.lang.UnsupportedClassVersionError: org/apache/catalina/startup/Bootstrap :Unsupported major.minor version 51.0
以为是tomcat版本和jdk不匹配。后来安装了openjdk(java-1.8.0-openjdk-src.x86_64)好了。配置环境变量 vim ~/.bash_profile
JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64
CLASSPATH=.:$JAVA_HOME/lib/tools.jar
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME CLASSPATH PATH
执行source ~/.bash_profile 使其生效。测试是否安装成功,访问localhost:8080 或 ip:8080
二、IntelliJ 创建工程
私以为IntelliJ 工程里边的各种settings太难懂了。。
创建工程的时候,要project里边是基本的命名和选择jdk。关键是facets里边要把用到的Spring和Web已经WebServices添加全了,要不跑不起来。。添加后,modules里会默认添加对应的模块。
具体的SpringMVC配置和详解,就参见http://www.cnblogs.com/baiduligang/p/4247164.html。
三、踩过的坑
1. 数据库编码问题,汉字的显示
mysql里边执行 show variables like 'char%'; 可查看当前db的编码设置,其中的result是直接影响代码里连接db后查询结果的编码的,需要修改为utf-8,不然没法显示汉字。
命令:SET character_set_results = charset_name; 其中charset_name 替换成utf-8.
character_set_connection(sql语句使用什么编码方式)、character_set_client (终端显示什么编码)、及character_set_results (sql执行结果是什么编码)
2. intelliJ 中tomcat的配置
运行设置中选则tomcat后,执行报错Unable to ping server at localhost:1099
原因:由于Tomcat默认关闭JMX功能,但IntelliJ IDE配置的IDE需要提供JMX功能
解决:hosts文件 127.0.0.1 添加本机名,例如:127.0.0.1 localhost bj-m-10313a.local
3. intelliJ 中 tomcat 运行报错 javax.servlet.http不存在
lib引入servlet-api的jar包
4. db中DATATIME类型的数据,当为默认值'0000-00-00 00:00:00'时,使用ResultSet.getTimestamp()报错:Cannot convert value '0000-00-00 00:00:00' fromcolumn 1 to TIMESTAMP
原因:ResultSet.getTimestamp(),这样会得到一个Java.sql.Timestamp类型的数据。在这里既不能使用ResultSet.getDate(),也不能使用ResultSet.getTime(),因为前者不包括time数据,后者不包括date数据。JDBC不能将'0000-00-00 00:00:00'转化为一个为一个java.sql.Timestamp,在Java中,想创建一个java.util.Date,使其值为'0000-00-00'也是不可能的,最古老的日期应该是'0001-01-0100:00:00'。
解决:
String url = "jdbc:mysql://localhost:3306/test?relaxAutoCommit=true&zeroDateTimeBehavior=convertToNull";
5. 页面报错: Java.lang.NoClassDefFoundError:javax/servlet/jsp/jstl/core/Config
解决:下载jstl-1.2.jar、standard-1.1.2.jar放在tomcat的lib下
6. 开启8090tomcat端口,访问的时候提示网络不通
原因:防火墙问题,关闭或者添加端口白名单
vim /etc/sysconfig/iptables
添加:-A INPUT -m state--state NEW -m tcp -p tcp --dport 8090 -j ACCEPT
重启防火墙# service iptablesrestart
7. 静态资源打war包的时候打不进去
解决:intelliJ上 file-project Structure-modules-sources 在想打包的静态资源上右键-resource
8. 使用JNI开发,IntelliJ运行及打包部署后运行,提示找不到JNI文件或 Handler dispatch failed; nestedexception is java.lang.NoClassDefFoundError: Could not initialize classnet.sf.clipsrules.jni.Environment
原因:因为tomcat的运营方式下没有设置library.path是设置引用的非Java类包(如DLL,SO)的位置
解决:IntelliJ上tomcat的运行配置中Server下的VM option添加 .path="非Java类包所在的路径";
tomcat的打包环境上,添加LD_LIBRARY_PATH环境变量 。vim ~/.bash_profile 添加:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/tomcat/clips
export LD_LIBRARY_PATH
其中:/usr/local/tomcat/clips作为java.library.path
并执行source ~/.bash_profile 使其生效。在LD_LIBRARY_PATH的环境变量路径下,添加需要so文件。
.so文件的生成办法,在含有JNI的实现源文件下执行make文件,例如make -fmakefile.linux,结果提示找不到jni.h和jni_md.h
解决办法,默认找的是/usr/include目录,所以将java下面的include中,例如
/usr/java/sinasrv2-jdk/include下的jni.h,及/usr/java/sinasrv2-jdk/include/linux下的jni_md.h拷贝到/usr/include下,就可以正常执行了。
执行后library-src下会生成一个libclipjni.so,拷贝到java.library.path的下面
推荐好文:
springmvc框架:http://www.cnblogs.com/baiduligang/p/4247164.html
springmvc接口开发:http://blog.csdn.net/zxw136511485/article/details/52584497
restful风格APi开发 :http://www.cnblogs.com/qixiaoyizhan/p/5864233.html
requestmapping详解:http://www.cnblogs.com/qq78292959/p/3760560.html
intelliJ java打war包: http://jingyan.baidu.com/article/a24b33cd10adf719fe002ba1.htmlmac 开启ssh服务:http://blog.csdn.net/govago/article/details/8536165
常用Linux命令汇总:
查询java_home环境变量 :/usr/libexec/java_home
查询全部的环境变量:Env
java基础知识:
调用静态方法:类名.class.方法名()
getClass().getResource()与getClass().getResourceAsStream()的差别是前者得到的是url路径,后者得到的是Inputstream流,即这个路径下的所有资源文件。
当路径中包含空格时,getResource()得到的url中空格会被转义成%20,file就无法识别,因此需要用url.toURI().getPath() 的方式做一下转换就好了
相关文章
- spring boot tomcat 打本地包成war,通过Tomcat启动时出现问题: ZipException: error in opening zip file
- SpringMVC基础-05
- SpringMVC——SpringMVC简介
- SpringMVC - 加载静态资源
- SpringMVC学习系列 之 表单标签
- springmvc 入门(1)
- SpringMvc如何获取请求头请求体的消息
- SpringMVC源码总结(四)由StringHttpMessageConverter引出的客户端服务器端之间的乱码过程分析
- SpringMVC文件上传源码分析前言
- Tomcat详解(二)——tomcat安装与配置
- Tomcat详解(一)——tomcat基础知识
- Quartz集成springMVC 的方案二(持久化任务、集群和分布式)
- 【项目实战】SpringMVC拦截器实战 - 自定义拦截器防止重复提交
- 【项目实战】SpringMVC拦截器实战 - 自定义拦截器对Token鉴权
- 【项目实战】SpringMVC入门介绍
- 三思考,实现自己定义404页:Tomcat、SpringMVC精确匹配、重写DispatchServlet
- SpringMVC经典系列-13使用SpringMVC处理Ajax请求---【LinusZhu】
- Java-SpringMvc-@ResponseBody返回中文字符串乱码