项目打war包发布到linux上的各种问题

一 . 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()异常,不过项目可以正常运行~具体原因有待研究.

猜你喜欢

转载自blog.csdn.net/oxiaoSheng123456789/article/details/83152666