一 . eclipse上的项目
1.eclipse上的web项目
右键项目--export--选择web里的WAR file,然后选择导出的位置即可.
有点需要注意的是jdbc文件url要写正确,尽量写ip:端口号,不要写localhost
2.eclipse上的maven项目
右键pom.xml -- maven install,要注意依赖的是jdk而不是jre,有报找不到符号或者找不到javax.servlet-api时可以尝试更换下jdk的
依赖
二.idea上的项目
这里我只测试了idea下的springboot项目.
首先pom.xml里配置
因为springboot项目内置了tomcat,所以有下面配置,考虑到项目还要在idea上测试,选择第二种方式
build标签下可以加入自定义生成war包的名字,最好和项目名以及application.yml文件里配置的context-path保持一致
此外,因为是由外部tomcat启动项目,所以要新建一个SpringBootStartApplication 继承自 SpringBootServletInitializer
作用:因为在外部容器部署的话,就不能依赖于Application的main函数了,而是要以类似于web.xml文件配置的方式来启动
Spring应用上下文, 此时我们需要在启动类中继承SpringBootServletInitializer并实现configure方法,这个类的作用与在web.xml
中配置负责初始化Spring应用上下文的监听器作用类似.【注意】:这个新建的类,与springboot的启动类是同级的
然后选择idea最左下角的菜单里的maven projects
依次执行clean 和 package ,或者直接执行install,会在项目target目录下生成war包
war包放到linux上的tomcat的webapps目录下启动tomcat即可
这里如果linux上是tomcat7的话,可能会报一个java.lang.ClassNotFoundException: javax.el.ELManager的错误.网上说法是
tomcat7的el-api.jar与springboot项目的el-api.jar冲突,重装tomcat8即可.
我这里不方便重装,因此尝试把D:\IntelliJ IDEA 2018.1.2\lib\rt\jasper2.1下的el-api.jar复制到tomcat的/usr/local/apache-tomcat-
7.0.82/lib目录下(这里是替换,注意备份!!!),但是运行仍然报同样错误!
然后把idea里的el-api.jar复制到jdk响应目录 /usr/java/jdk1.8.0_181-amd64/jre/lib/ext下,
再次运行,成功...
按结果推测jdk 里少这样一个jar包,应该是版本之间的差异造成的~
之后测试了还原tomcat里的jar包,只将el-api.jar复制到jdk的lib下,发现项目可以正常运行,但是会报javax.servlet.ServletException:
java.lang.NoSuchMethodError: javax.el.ExpressionFactory.newInstance()异常,不过项目可以正常运行~具体原因有待研究.