2012-02-13 1 views
6

Tôi vừa cài đặt tomcat thông qua trình quản lý gói ubuntu. Tôi mở nhật ký và điều đầu tiên tôi thấy là một ngoại lệ thú vị.Thiết lập Apache Tomcat java.lang.NoClassDefFoundError: org/springframework/asm/ClassVisitor

java.lang.NoClassDefFoundError: org/Spring Framework/asm/ClassVisitor

Tôi có thiếu cái gì đó trong cài đặt?

Nên nói rằng lý do tôi cài đặt lại ở nơi đầu tiên là tôi đã cho lần đầu tiên tôi sử dụng dịch vụ web bằng Tomcat và điều đó không hiệu quả. Nhưng bây giờ: Tại sao tôi nhận được ngoại lệ này? tôi dán toàn bộ bản ghi ra khỏi lòng tốt:

Feb 13, 2012 10:00:17 PM org.apache.catalina.core.ApplicationContext log 
INFO: Initializing Spring root WebApplicationContext 
Feb 13, 2012 10:00:17 PM org.apache.catalina.core.StandardContext listenerStart 
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener 
java.lang.NoClassDefFoundError: org/springframework/asm/ClassVisitor 
at org.springframework.context.support.AbstractRefreshableApplicationContext.customizeBeanFactory(AbstractRefreshableApplicationContext.java:218) 
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129) 
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:467) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:397) 
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:282) 
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:204) 
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972) 
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467) 
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) 
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) 
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526) 
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905) 
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:740) 
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:500) 
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277) 
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321) 
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) 
at org.apache.catalina.core.StandardHost.start(StandardHost.java:722) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) 
at org.apache.catalina.core.StandardService.start(StandardService.java:516) 
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
at org.apache.catalina.startup.Catalina.start(Catalina.java:593) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:616) 
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
Caused by: java.lang.ClassNotFoundException: org.springframework.asm.ClassVisitor 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1484) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1329) 
... 31 more 
Feb 13, 2012 10:00:17 PM org.apache.catalina.core.ApplicationContext log 
INFO: Closing Spring root WebApplicationContext 
Feb 13, 2012 10:02:30 PM org.apache.catalina.core.ApplicationContext log 
INFO: Initializing Spring root WebApplicationContext 
Feb 13, 2012 10:02:30 PM org.apache.catalina.core.StandardContext listenerStart 
SEVERE: Exception sending context initialized event to listener instance of class  org.springframework.web.context.ContextLoaderListener 
java.lang.NoClassDefFoundError: org/springframework/asm/ClassVisitor 
at org.springframework.context.support.AbstractRefreshableApplicationContext.customizeBeanFactory(AbstractRefreshableApplicationContext.java:218) 
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129) 
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:467) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:397) 
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:282) 
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:204) 
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972) 
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467) 
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) 
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) 
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526) 
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905) 
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:740) 
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:500) 
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277) 
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321) 
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) 
at org.apache.catalina.core.StandardHost.start(StandardHost.java:722) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) 
at org.apache.catalina.core.StandardService.start(StandardService.java:516) 
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
at org.apache.catalina.startup.Catalina.start(Catalina.java:593) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:616) 
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
Caused by: java.lang.ClassNotFoundException: org.springframework.asm.ClassVisitor 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1484) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1329) 
... 31 more 
Feb 13, 2012 10:02:30 PM org.apache.catalina.core.ApplicationContext log 
INFO: Closing Spring root WebApplicationContext 
+1

Dường như bạn không bao gồm tệp spring-asm-X.Y.Z.RELEASE.jar trong đường dẫn lớp. –

+0

Tôi nhận ra mình đang thiếu một cái lọ. Hài hước mà không được bao gồm trong việc cài đặt quản lý gói khi nó khóc cho nó trước khi tôi thậm chí bắt đầu sử dụng nó. Bất kỳ ý tưởng nơi tôi có thể nhận được jar nói? –

+0

Mùa xuân KHÔNG phải là một phần của triển khai Tomcat chuẩn. Đó là vùng chứa đảo ngược phụ thuộc mà bạn có thể sử dụng trên ứng dụng của mình. Điều đó đang được nói, đó là trách nhiệm của bạn để thêm tất cả các phụ thuộc cần thiết trong classpath của webapp của bạn. –

Trả lời

8

Dường như Tomcat đang cố gắng triển khai một ứng dụng web dựa trên mùa xuân ASM nhưng nó không thể tìm thấy tập tin JAR cho mùa xuân ASM trên classpath . Tôi không chắc phiên bản ứng dụng web của bạn đang sử dụng phiên bản Spring nào, nhưng phiên bản mới nhất (tính đến hôm nay) cho tệp JAR đó là 3.1.0.RELEASE.

Nếu bạn đang sử dụng Maven, bạn có thể thêm các tập tin JAR thiếu để dự án của bạn bằng cách thêm này để pom.xml của dự án của bạn:

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>org.springframework.asm</artifactId> 
    <version>3.1.0.RELEASE</version> 
</dependency> 

Nếu bạn không sử dụng Maven để quản lý phụ thuộc của bạn, sau đó bạn có thể lấy org.springframework.asm-3.1.0.RELEASE.jar (hoặc bất kỳ phiên bản nào bạn cần) bằng cách tải xuống toàn bộ Khung công tác Spring từ http://www.springsource.org/spring-community-download. Tệp jar ASM sau đó sẽ cần phải được đặt trong thư mục WEB-INF/lib của dự án của bạn.

+0

Tôi không triển khai bất kỳ thứ gì. Đây là tệp nhật ký ngay khi cài đặt. Tôi đã không triển khai bất cứ điều gì –

+0

Mặt khác ... Đây không phải là một máy tính mới, do đó, có thể có một cái gì đó trên đường dẫn một nơi nào đó của nó cố gắng để bắt đầu rằng một cài đặt lại không giết. Ill nhìn vào đó. –

+0

Máy này đã có Tomcat trước đó. Và nó đã có một thiết lập chủ webservice đặc biệt, và lo, một tập tin chiến tranh đã có. Nó chưa được gỡ cài đặt. Khi tôi gỡ bỏ nó và cài đặt lại các thông báo lỗi đã biến mất. –

2

Cách tiếp cận chung để xử lý tình trạng này

1) thiết lập những gì thư viện jar chứa classs thiếu.

2) kiểm tra, mà jar này trình bày trong classpath của bạn

+0

Tôi nhận ra rằng nhiều, nhưng tôi không có ý tưởng về những gì còn thiếu, tôi chưa bao giờ trong cuộc sống của tôi được sử dụng mùa xuân và đây là một cài đặt Tomcat hoàn toàn mới hành động lên. Tôi viết bài này bởi vì tôi đang gặp rắc rối theo cách tiếp cận chung, vì tôi không biết tôi cần cái bình gì. –

+0

Dường như, Gabriel chỉ định chính xác bình luận trong câu hỏi.Đáng buồn là tôi không thể nói chính xác những gì bạn đang thiếu chính xác, vì tôi không biết phiên bản mùa xuân của bạn và những người phụ thuộc khác. – Anton

1

Lỗi này có thể xuất phát từ các mục nhập mà bạn có trong tệp web.xml. Ví dụ nếu bạn có điều này - org.springframework.web.servlet.DispatcherServlet. !! Vì vậy, khi tomcat bắt đầu, tải-trên-khởi động cố gắng tìm ra bối cảnh asm mùa xuân, nhưng có lẽ triển khai assemblyis thiếu jar phụ thuộc maven (mặc dù các jar có sẵn) Để giải quyết này thử thiết lập dưới đây

**Basiaclly In project options you should include Maven Dependencies to your Deployment Assembly** 

1. Project properties-> Deployment Assembly -> Add.. 

2. Java Build Path Entries -> Maven Dependencies 

3. Finish 

Run mavem clean install and run on server. The error should go away. 
1

Trong trường hợp của tôi, vấn đề là trong 2 phiên bản của Java được cài đặt trên máy tính: Java 7 và Java 8. Unisntalling Java 7 giải quyết vấn đề.