今天部署了一个项目到tomcat上,原本以为会很顺利,结果没想到会遇到illegal access错误 折腾了好久还是没好 ,就直接去百度,搜索到一个解决办法但并不适用我这种情况,如下:
解决方法是:修改tomcat目录下conf文件夹下的server.xml,
<Context>代表了运行在<Host>上的单个Web应用,一个<Host>可以有多个< Context>元素,每个Web应用必须有唯一的URL路径,这个URL路径在<Context>中的属性path中设定。
<Context path="/helloApp" docBase="helloApp" debug="0" reloadable="true"/>
<Context>元素的属性:
path:指定访问该Web应用的URL入口。
docBase:指定Web应用的文件路径,可以给定绝对路径,也可以给定相对于<Host>的appBase属性的相对路径,如果Web应用采用开放目录结构,则指定Web应用的根目录,如果Web应用是个war文件,则指定war文件的路径。
reloadable:如果这个属性设为true,tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下class文件的改动,如果监测到有class文件被更新的,服务器会自动重新加载Web应用
因此我查看了tomcat的日志,里面清楚写着noClassFoundException,该类为阿里大鱼短信服务的一个jar包(aliyun-java-sdk-core-3.3.1.jar)中的类,
但是该jar包明明就用maven添加到项目了啊(本地项目能运行成功,上传到服务器就不行),于是我便将打包好的war包解压查看里面的jar包,果然没有该jar包,
很费解,但是没办法,我就去官网下载了该jar包,直接导入项目,并注释掉pom.xml中相关代码,然后使用eclipse直接打war包,上传到服务器,bingo!
不过需要注意的是
1.maven项目直接导入jar包可能会使mvn clean package命令打包失败,所以事后需要将相关jar包添加到本地仓库,通过配置pom.xml来引入jar包。
2.你可以通过日志来了解你的情况是否和我一样。
还有最后关注一点:看日志,明确报错原因,才是找到解决办法的最佳途径!