2016-08-24 23 views
5

Mam prosty program Spring HelloWorld. Jego treść jest następująca:java.lang.ClassNotFoundException: org.springframework.expression.ParserContext Spring HelloWorld?

enter image description here

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.mahesha999.examples.spring</groupId> 
    <artifactId>SpringExamples</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>4.3.2.RELEASE</version> 
     </dependency>  
    </dependencies> 

</project> 

eg1.xml

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-4.0.xsd"> 

    <bean id="helloBean" class="com.mahesha999.examples.spring.eg1.HelloWorld"> 
     <property name="name" value="Mahesha999" /> 
    </bean> 

</beans> 

HelloWorld.java

public class HelloWorld { 
    private String name; 

    public void setName(String name) { 
     this.name = name; 
    } 

    public void printHello() { 
     System.out.println("Spring : Hello ! " + name); 
    } 
} 

App.java

import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 

public class App { 
    public static void main(String[] args) { 
     ApplicationContext context = new ClassPathXmlApplicationContext("eg1.xml"); 

     HelloWorld obj = (HelloWorld) context.getBean("helloBean"); 
     obj.printHello(); 
    } 
} 

To dało mi następujący błąd:

INFO: Loading XML bean definitions from class path resource [eg1.xml] 
Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/expression/ParserContext 
    at org.springframework.context.support.AbstractApplicationContext.prepareBeanFactory(AbstractApplicationContext.java:628) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:516) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) 
    at com.mahesha999.examples.spring.eg1.App.main(App.java:8) 
Caused by: java.lang.ClassNotFoundException: org.springframework.expression.ParserContext 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 5 more 

Kiedy zmienił wersję sprężyny od 4.3.2 do 4.2.2 w pom.xml, to działało dobrze. Dlaczego tak jest?

+0

NoClassDefFoundError = ClassNotFoundError: http://stackoverflow.com/a/5756989/6735604 –

Odpowiedz

2

Przetestowałem twój kod w czasie zaćmienia i działa dobrze zarówno z 4.2.2.RELEASE i 4.3.2.RELEASE. Drukuje poniżej wiadomość. Czy możesz wyczyścić kompilację lub uruchomić kompilację z wiersza poleceń.

Spring : Hello ! Mahesha999 
+0

próbowali że wiele razy od zaćmienia – Mahesha999

+0

Co powiesz na uruchomienie kompilacji maven z wiersza polecenia? – abaghel

+0

wyłączył "Kompiluj automatycznie", zmienił na '4.3.2', wypróbował' maven install' z katalogu projektu w wierszu poleceń, odświeżył projekt w czasie zaćmienia i uruchomił klasę App. Ten sam błąd. Zmieniono z powrotem do "4.2.2" tymi samymi krokami. Rzeczy zaczęły działać. – Mahesha999

0

Otrzymasz ten błąd tylko wtedy, gdy nie ma biblioteki "wiosennej ekspresji".
rozwiązanie 1: Jeśli po dodaniu biblioteki wyrażenia sprężynowego nadal istnieje, spróbuj dodać nową wersję biblioteki sprężyn.

Rozwiązanie 2: Usuń plik spring.xml wraz z jego pakietem, a następnie utwórz nowy pakiet za pomocą pliku spring.xml.

7

ja również otrzymuję ten sam błąd i został ustalony po dodaniu sprężyny ekspresję lib