maven 引入spring jarmavenspring-aspects依赖为什么启动服务器失败

1015人阅读
在搭建web项目时,出现一个比较诡异的问题,任何JSP页面突然都不能够正常地显示,系统爆出HTTP:500(服务器内部错误)的页面
HTTP Status 500 - java.lang.NoSuchMethodError: org.eclipse.pilationResult.getProblems()[Lorg/eclipse/jdt/core/compiler/IP
type&Exception report
message&java.lang.NoSuchMethodError: org.eclipse.pilationResult.getProblems()[Lorg/eclipse/jdt/core/compiler/IP
description&The server encountered an internal error that prevented it from fulfilling this request.
javax.servlet.ServletException: java.lang.NoSuchMethodError: org.eclipse.pilationResult.getProblems()[Lorg/eclipse/jdt/core/compiler/IP
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:273)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:264)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1208)
org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:992)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause
Java代码&&
Java代码&&
java.lang.NoSuchMethodError:&org.eclipse.pilationResult.getProblems()[Lorg/eclipse/jdt/core/compiler/IP&&&&&&&&&&&
org.piler.JDTCompiler$2.acceptResult(JDTCompiler.java:354)&org.eclipse.pile(Compiler.java:480)&&&&&&&org.piler.JDTCompiler.generateClass(JDTCompiler.java:425)&&org.pile(Compiler.java:298)&&&&&&&&&&&
org.pile(Compiler.java:277)&&&&&&&&&&&
org.pile(Compiler.java:265)&&&&&&&&&&&
org.apache.pile(JspCompilationContext.java:564)&&&&&&&&&&&
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:299)&&&&&&&&&&&
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)&&&&org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)&&&&&&&&&&&
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)&&&&&&&&&&&
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)&&&&&&org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)&&&&&&&&&&&
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:264)&&&&&&&&&&&
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1208)&&&&&&&&&&&
org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:992)&&&&&&&&&&&
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939)&&&&&&&&&&&
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)&&&&&&&&&&&
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)&&&&&&&&&&&
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)&&&&&&&&&&&
javax.servlet.http.HttpServlet.service(HttpServlet.java:620)&&&&&&&&&&&
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)&&&&&&&&&&&
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)&&&&&&&&&&&
org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)&&&&&&&&&&&
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)&&&&&&&&&&&
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)&&
经过初步查看堆栈,大意是将JSP编译成Servlet产生了错误,类不匹配,怀疑可能是JSTL,Servlet和Tomcat版本产生了冲突。一番折腾,没有进展。
于是思考了一下,刚才只不过是添加了hadoop hdfs相关的jar包:
&&&&org.apache.hadoop&&
&&&&hadoop-common&&
&&&&2.2.0&&
&&&&org.apache.hadoop&&
&&&&hadoop-hdfs&&
&&&&2.2.0&&
&&&&org.apache.hadoop&&
&&&&hadoop-auth&&
&&&&2.2.0&&
难道是其中包含了一些特殊的依赖?通过IntelliJ Idea中的pom编辑器,可以显示Maven Show Dependencies:
可以看出所有的依赖关系,果然,hadoop-common包依赖了servlet-api, jasper-runtime等可能与当前环境冲突的jar包,由于这些都是通过依赖关系链产生的关系,所以非常不容易被察觉。
同样,也可以通过mvn自带的工具在项目中命令行操作得到整个依赖的树形结构:
Java代码&&
mvn&dependency:&tree&&&
[INFO]&com.xxx:diablo-framework:war:1.0-SNAPSHOT&&
[INFO]&+-&javax.servlet:jstl:jar:1.2:compile&&
[INFO]&+-&javax:javaee-api:jar:6.0:provided&&
[INFO]&+-&log4j:log4j:jar:1.2.8:compile&&
[INFO]&+-&com.sun.mail:javax.mail:jar:1.5.2:compile&&
[INFO]&|&&\-&javax.activation:activation:jar:1.1:compile&&
[INFO]&+-&commons-io:commons-io:jar:2.4:compile&&
[INFO]&+-&commons-beanutils:commons-beanutils:jar:1.9.2:compile&&
[INFO]&|&&+-&commons-logging:commons-logging:jar:1.1.1:compile&&
[INFO]&|&&\-&commons-collections:commons-collections:jar:3.2.1:compile&&
[INFO]&+-&commons-lang:commons-lang:jar:2.6:compile&&
[INFO]&+-&org.codehaus.jackson:jackson-xc:jar:1.9.13:compile&&
[INFO]&|&&\-&org.codehaus.jackson:jackson-core-asl:jar:1.9.13:compile&&
[INFO]&+-&org.codehaus.jackson:jackson-mapper-asl:jar:1.9.13:compile&&
[INFO]&+-&commons-httpclient:commons-httpclient:jar:3.1:test&&
[INFO]&|&&\-&commons-codec:commons-codec:jar:1.2:compile&&
[INFO]&+-&junit:junit:jar:4.11:test&&
[INFO]&|&&\-&org.hamcrest:hamcrest-core:jar:1.3:test&&
[INFO]&+-&org.springframework:spring-core:jar:3.2.2.RELEASE:compile&&
[INFO]&+-&org.springframework:spring-aop:jar:3.2.2.RELEASE:compile&&
[INFO]&|&&\-&aopalliance:aopalliance:jar:1.0:compile&&
[INFO]&+-&org.springframework:spring-aspects:jar:3.2.2.RELEASE:compile&&
[INFO]&|&&\-&org.aspectj:aspectjweaver:jar:1.7.2:compile&&
[INFO]&+-&org.springframework:spring-beans:jar:3.2.2.RELEASE:compile&&
[INFO]&+-&org.springframework:spring-context:jar:3.2.2.RELEASE:compile&&
[INFO]&+-&org.springframework:spring-context-support:jar:3.2.2.RELEASE:compile&&
[INFO]&+-&org.springframework:spring-dao:jar:2.0.8:compile&&
[INFO]&+-&org.springframework:spring-expression:jar:3.2.2.RELEASE:compile&&
[INFO]&+-&org.springframework:spring-jdbc:jar:3.2.2.RELEASE:compile&&
[INFO]&+-&org.springframework:spring-jms:jar:3.2.2.RELEASE:compile&&
[INFO]&+-&org.springframework:spring-orm:jar:3.2.2.RELEASE:compile&&
[INFO]&+-&org.springframework:spring-oxm:jar:3.2.2.RELEASE:compile&&
[INFO]&+-&org.springframework:spring-test:jar:3.2.2.RELEASE:compile&&
[INFO]&+-&org.springframework:spring-tx:jar:3.2.2.RELEASE:compile&&
[INFO]&+-&org.springframework:spring-web:jar:3.2.2.RELEASE:compile&&
[INFO]&+-&org.springframework:spring-webmvc:jar:3.2.2.RELEASE:compile&&
[INFO]&+-&mons:commons-exec:jar:1.3:compile&&
[INFO]&+-&commons-dbcp:commons-dbcp:jar:1.4:compile&&
[INFO]&|&&\-&commons-pool:commons-pool:jar:1.5.4:compile&&
[INFO]&+-&org.hibernate:hibernate-core:jar:3.6.10.Final:compile&&
[INFO]&|&&+-&antlr:antlr:jar:2.7.6:compile&&
[INFO]&|&&+-&dom4j:dom4j:jar:1.6.1:compile&&
[INFO]&|&&+-&org.hibernate:hibernate-commons-annotations:jar:3.2.0.Final:compile&&
[INFO]&|&&+-&org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.1.Final:compile&&
[INFO]&|&&+-&javax.transaction:jta:jar:1.1:compile&&
[INFO]&|&&\-&org.slf4j:slf4j-api:jar:1.6.1:compile&&
[INFO]&+-&org.hibernate:hibernate-entitymanager:jar:3.6.10.Final:compile&&
[INFO]&|&&+-&cglib:cglib:jar:2.2:compile&&
[INFO]&|&&|&&\-&asm:asm:jar:3.1:compile&&
[INFO]&|&&\-&javassist:javassist:jar:3.12.0.GA:compile&&
[INFO]&+-&net.sf.ehcache:ehcache-core:jar:2.6.9:compile&&
[INFO]&+-&mysql:mysql-connector-java:jar:5.1.31:compile&&
[INFO]&+-&org.hsqldb:hsqldb:jar:2.2.9:compile&&
[INFO]&+-&commons-fileupload:commons-fileupload:jar:1.3.1:compile&&
[INFO]&+-&org.apache.poi:poi:jar:3.5-FINAL:compile&&
[INFO]&+-&org.apache.poi:poi-ooxml:jar:3.5-FINAL:compile&&
[INFO]&|&&\-&org.apache.poi:ooxml-schemas:jar:1.0:compile&&
[INFO]&|&&&&&\-&org.apache.xmlbeans:xmlbeans:jar:2.3.0:compile&&
[INFO]&|&&&&&&&&\-&stax:stax-api:jar:1.0.1:compile&&
[INFO]&+-&org.apache.oozie:oozie-client:jar:4.1.0:compile&&
[INFO]&|&&+-&com.googlecode.json-simple:json-simple:jar:1.1:compile&&
[INFO]&|&&+-&commons-cli:commons-cli:jar:1.2:compile&&
[INFO]&|&&+-&com.google.guava:guava:jar:11.0.2:compile&&
[INFO]&|&&|&&\-&com.google.code.findbugs:jsr305:jar:1.3.9:compile&&
[INFO]&|&&+-&org.apache.activemq:activemq-client:jar:5.8.0:compile&&
[INFO]&|&&|&&+-&org.apache.geronimo.specs:geronimo-jms_1.1_spec:jar:1.1.1:compile&&
[INFO]&|&&|&&+-&org.fusesource.hawtbuf:hawtbuf:jar:1.9:compile&&
[INFO]&|&&|&&\-&org.apache.geronimo.specs:geronimo-j2ee-management_1.1_spec:jar:1.0.1:compile&&
[INFO]&|&&+-&org.slf4j:slf4j-simple:jar:1.6.6:compile&&
[INFO]&|&&\-&xerces:xercesImpl:jar:2.10.0:compile&&
[INFO]&|&&&&&\-&xml-apis:xml-apis:jar:1.4.01:compile&&
[INFO]&+-&org.freemarker:freemarker:jar:2.3.20:compile&&
[INFO]&+-&org.apache.hadoop:hadoop-common:jar:2.2.0:compile&&
[INFO]&|&&+-&org.apache.hadoop:hadoop-annotations:jar:2.2.0:compile&&
[INFO]&|&&+-&mons:commons-math:jar:2.1:compile&&
[INFO]&|&&+-&xmlenc:xmlenc:jar:0.52:compile&&
[INFO]&|&&+-&commons-net:commons-net:jar:3.1:compile&&
[INFO]&|&&+-&org.mortbay.jetty:jetty:jar:6.1.26:compile&&
[INFO]&|&&+-&org.mortbay.jetty:jetty-util:jar:6.1.26:compile&&
[INFO]&|&&+-&com.sun.jersey:jersey-core:jar:1.9:compile&&
[INFO]&|&&+-&com.sun.jersey:jersey-json:jar:1.9:compile&&
[INFO]&|&&|&&+-&org.codehaus.jettison:jettison:jar:1.1:compile&&
[INFO]&|&&|&&+-&com.sun.xml.bind:jaxb-impl:jar:2.2.3-1:compile&&
[INFO]&|&&|&&|&&\-&javax.xml.bind:jaxb-api:jar:2.2.2:compile&&
[INFO]&|&&|&&\-&org.codehaus.jackson:jackson-jaxrs:jar:1.8.3:compile&&
[INFO]&|&&+-&com.sun.jersey:jersey-server:jar:1.9:compile&&
[INFO]&|&&+-&commons-el:commons-el:jar:1.0:compile&&
[INFO]&|&&+-&net.java.dev.jets3t:jets3t:jar:0.6.1:compile&&
[INFO]&|&&+-&commons-configuration:commons-configuration:jar:1.6:compile&&
[INFO]&|&&|&&+-&commons-digester:commons-digester:jar:1.8:compile&&
[INFO]&|&&|&&\-&commons-beanutils:commons-beanutils-core:jar:1.8.0:compile&&
[INFO]&|&&+-&org.slf4j:slf4j-log4j12:jar:1.7.5:compile&&
[INFO]&|&&+-&org.apache.avro:avro:jar:1.7.4:compile&&
[INFO]&|&&|&&+-&com.thoughtworks.paranamer:paranamer:jar:2.3:compile&&
[INFO]&|&&|&&\-&org.xerial.snappy:snappy-java:jar:1.0.4.1:compile&&
[INFO]&|&&+-&com.google.protobuf:protobuf-java:jar:2.5.0:compile&&
[INFO]&|&&+-&com.jcraft:jsch:jar:0.1.42:compile&&
[INFO]&|&&+-&org.apache.zookeeper:zookeeper:jar:3.4.5:compile&&
[INFO]&|&&\-&mons:commons-compress:jar:1.4.1:compile&&
[INFO]&|&&&&&\-&org.tukaani:xz:jar:1.0:compile&&
[INFO]&+-&org.apache.hadoop:hadoop-hdfs:jar:2.2.0:compile&&
[INFO]&|&&+-&commons-daemon:commons-daemon:jar:1.0.13:compile&&
[INFO]&|&&+-&javax.servlet.jsp:jsp-api:jar:2.1:compile&&
[INFO]&|&&\-&tomcat:jasper-runtime:jar:5.5.23:compile&&
[INFO]&+-&org.apache.hadoop:hadoop-auth:jar:2.2.0:compile&&
[INFO]&+-&com.munication:jar:1.0-SNAPSHOT:compile&&
[INFO]&+-&com.caucho:hessian:jar:3.1.5:compile&&
[INFO]&\-&org.quartz-scheduler:quartz:jar:1.8.4:compile&&
于是,通过右键将这些jar包排除(Exclude)出去,最后编辑生成的依赖成为了这样:
&&&&org.apache.hadoop&&
&&&&hadoop-common&&
&&&&2.2.0&&
&&&&&&&&&&
&&&&&&&&&&&&servlet-api&&
&&&&&&&&&&&&javax.servlet&&
&&&&&&&&&&
&&&&&&&&&&
&&&&&&&&&&&&jasper-compiler&&
&&&&&&&&&&&&tomcat&&
&&&&&&&&&&
&&&&&&&&&&
&&&&&&&&&&&&jasper-runtime&&
&&&&&&&&&&&&tomcat&&
&&&&&&&&&&
&&&&&&&&&&
&&&&&&&&&&&&jsp-api&&
&&&&&&&&&&&&javax.servlet.jsp&&
&&&&&&&&&&
&&&&org.apache.hadoop&&
&&&&hadoop-hdfs&&
&&&&2.2.0&&
&&&&&&&&&&
&&&&&&&&&&&&servlet-api&&
&&&&&&&&&&&&javax.servlet&&
&&&&&&&&&&
问题才得以解决,在普通的Java应用中,当出现相同版本的jar包,class时,是根据启动时的CLASSPATH先后顺序来决定最终使用的是哪个类型,但是这样就非常不确定。虽然OSGi技术可以通过隔离ClassLoader的方式解决这个问题,但OSGi本身稍显复杂臃肿,学习成本比较高,而且同样需要一个OSGi容器。这就要求我们在平时引入新的jar包时能够对其进行依赖分析,找出可能产生冲突的jar包,最终解决问题。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:52456次
排名:千里之外
原创:30篇
转载:36篇
(1)(2)(4)(1)(2)(21)(4)(2)(29)匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。spring(24)
看官网的quickstart,以为maven只要将quickstart里的配置复制到项目里就好了,但是在项目中使用jdbc和事物时,都提示找不到相关的类,才知道原来官网文档还有猫腻。
maven引入spring框架
project下框架有点多,点spring &framework就可以了。
quickstart 里说,把框内的依赖加入到你工程的pom.xml文件里,你就可以开始使用 springframwork 进行对象依赖管理,
注意:仅仅加入下面这个依赖,意味着你只加入了spring框架的context模块,仅仅可以使用spring框架的依赖管理功能,如果要使用spring进行事物管理或者数据库管理,你会发现项目缺少相关的类。
这是spring让我晕了好久的地方。
既然这里不是spring的全部,那么全部又在哪呢?路径比较复杂。看下面:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
下面这个表便是spring的模块,用到哪个就引入哪个。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:78878次
积分:2055
积分:2055
排名:第17877名
原创:126篇
评论:26条
(2)(2)(8)(8)(2)(5)(8)(6)(15)(6)(5)(1)(4)(21)(5)(9)(7)(8)(3)(4)(1)}

我要回帖

更多关于 spring aspects 作用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信