Avatar billede dl Nybegynder
16. november 2007 - 18:57 Der er 11 kommentarer og
1 løsning

Spring, og xml, classNotFount

Jeg prøver at lave et lille spring eksempel til mig selv, for at se hvordan det virker.
Men jeg få desvære denne fejl:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    at org.springframework.util.ClassUtils.<clinit>(ClassUtils.java:73)
    at org.springframework.core.io.DefaultResourceLoader.<init>(DefaultResourceLoader.java:52)
    at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:198)
    at org.springframework.context.support.AbstractRefreshableApplicationContext.<init>(AbstractRefreshableApplicationContext.java:80)
    at org.springframework.context.support.AbstractXmlApplicationContext.<init>(AbstractXmlApplicationContext.java:58)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:119)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:66)
    at CommandLineView.main(CommandLineView.java:24)


Hvordan kommer jeg denne fejl til lives ?

Jeg køre med Eclipse Enterprice, og har laves et web projekt. Dog køre jeg bare med en standart main metode.
Bare for at se om det hele bliver injected som det skal, af spring.
Mening er at det skal udbygges med et web, og hibernate :)  Men endtil nu, hvordan får jeg rettes op på denne fejl.

kode Structur:

F:\eclipse workspace\BikeWithSpringEksampel\.classpath
F:\eclipse workspace\BikeWithSpringEksampel\.project
F:\eclipse workspace\BikeWithSpringEksampel\.settings
F:\eclipse workspace\BikeWithSpringEksampel\build
F:\eclipse workspace\BikeWithSpringEksampel\dir.list.txt
F:\eclipse workspace\BikeWithSpringEksampel\lib
F:\eclipse workspace\BikeWithSpringEksampel\src
F:\eclipse workspace\BikeWithSpringEksampel\WebContent
F:\eclipse workspace\BikeWithSpringEksampel\.settings\org.eclipse.jdt.core.prefs
F:\eclipse workspace\BikeWithSpringEksampel\.settings\org.eclipse.jst.common.project.facet.core.prefs
F:\eclipse workspace\BikeWithSpringEksampel\.settings\org.eclipse.wst.common.component
F:\eclipse workspace\BikeWithSpringEksampel\.settings\org.eclipse.wst.common.project.facet.core.xml
F:\eclipse workspace\BikeWithSpringEksampel\build\classes
F:\eclipse workspace\BikeWithSpringEksampel\build\classes\Bike.class
F:\eclipse workspace\BikeWithSpringEksampel\build\classes\CommandLineView.class
F:\eclipse workspace\BikeWithSpringEksampel\build\classes\IRentABike.class
F:\eclipse workspace\BikeWithSpringEksampel\build\classes\MyServlet.class
F:\eclipse workspace\BikeWithSpringEksampel\build\classes\RentABike.class
F:\eclipse workspace\BikeWithSpringEksampel\lib\javax.servlet.jar
F:\eclipse workspace\BikeWithSpringEksampel\lib\spring-beans.jar
F:\eclipse workspace\BikeWithSpringEksampel\lib\spring-context.jar
F:\eclipse workspace\BikeWithSpringEksampel\lib\spring-core.jar
F:\eclipse workspace\BikeWithSpringEksampel\lib\spring-sources.jar
F:\eclipse workspace\BikeWithSpringEksampel\src\Bike.java
F:\eclipse workspace\BikeWithSpringEksampel\src\CommandLineView.java
F:\eclipse workspace\BikeWithSpringEksampel\src\RentABike.java
F:\eclipse workspace\BikeWithSpringEksampel\WebContent\index.jsp
F:\eclipse workspace\BikeWithSpringEksampel\WebContent\META-INF
F:\eclipse workspace\BikeWithSpringEksampel\WebContent\WEB-INF
F:\eclipse workspace\BikeWithSpringEksampel\WebContent\META-INF\MANIFEST.MF
F:\eclipse workspace\BikeWithSpringEksampel\WebContent\WEB-INF\application-context.xml
F:\eclipse workspace\BikeWithSpringEksampel\WebContent\WEB-INF\classes
F:\eclipse workspace\BikeWithSpringEksampel\WebContent\WEB-INF\lib
F:\eclipse workspace\BikeWithSpringEksampel\WebContent\WEB-INF\web.xml

// bike //

public class Bike {

    private String model;
    private int price;
   
    public Bike(String model, int price) {
        this.model = model;
        this.price = price;
    }
   
    public String toString() {
        return "Bike : model: " + model + " \n: price: " + price;
    }
   
    public String getModel() {
        return model;
    }
}

// RentABike //
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class RentABike {

    private String storeName;
    private List bikes;
   
    public RentABike() {
        initBike();
    }
   
    private void initBike() {
        bikes = new ArrayList();
        bikes.add(new Bike("model1", 200));
        bikes.add(new Bike("model2", 400));
        bikes.add(new Bike("model3", 600));   
    }
   
    public List getBikes() {
        return bikes;
    }
   
    public Bike getBike(String model) {
        Iterator iter = bikes.iterator();
        while(iter.hasNext()) {
            Bike bike = (Bike) iter.next();
            if (bike.getModel().equals(model))
                return bike;
        }
        return null;
    }
   
}

// CommandLineView //



import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;

public class CommandLineView {

    private RentABike facade;// = new RentABike();
   
    public void print() {
        java.util.Iterator iter = facade.getBikes().iterator();
        while (iter.hasNext()) {
            Bike bike = (Bike) iter.next();
            System.out.println(bike.toString());
        }
    }
   
    /**
    * @param args
    */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("RentAB ike-context.xml");

        //CommandLineView clv = new CommandLineView();
        CommandLineView clv = (CommandLineView) ctx.getBean("CommandLineView");
       
       
        clv.print();
    }

}


// application.context.xml // 

<?xml version="1.0"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

  <bean id="commandLineView" class="CommandLineView">
      <property name="rentaBike"><ref bean="rentaBike"/></property>
  </bean>

</beans>





Jeg håber dette er nok information, ellers spørger i bare.
Jeg kan også sende det til jer :)

/// dennis
Avatar billede arne_v Ekspert
16. november 2007 - 19:08 #1
Du smider Jakarta Commons Logging in i classpath.
Avatar billede arne_v Ekspert
16. november 2007 - 19:09 #2
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory

->

http://commons.apache.org/logging/
Avatar billede dl Nybegynder
16. november 2007 - 20:08 #3
giver jo meget god mening, når du nu siger det :)

Men jeg kan ikke finde det sted, hvor den bliver alt ind :)
Avatar billede dl Nybegynder
16. november 2007 - 20:09 #4
kan ikke finde det i koden, nogle steder :) kan det være noget Spring, forventer at , man har
Avatar billede dl Nybegynder
16. november 2007 - 20:14 #5
ja, det var det ... fandt det libery, hvor den logger class var.
men nu får jeg denne fejl:

16-11-2007 20:12:28 org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@5e3974: display name [org.springframework.context.support.ClassPathXmlApplicationContext@5e3974]; startup date [Fri Nov 16 20:12:28 CET 2007]; root of context hierarchy
16-11-2007 20:12:28 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [RentABike-context.xml]
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [RentABike-context.xml]; nested exception is java.io.FileNotFoundException: class path resource [RentABike-context.xml] cannot be opened because it does not exist
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:320)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:290)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:142)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:158)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:184)
    at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:112)
    at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:79)
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:97)
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:411)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:338)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:122)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:66)
    at CommandLineView.main(CommandLineView.java:24)
Caused by: java.io.FileNotFoundException: class path resource [RentABike-context.xml] cannot be opened because it does not exist
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:142)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:307)
    ... 12 more




det er jo en man kan forstå  :)  men hvor skal mine xml filer så ligger, hvis ikke i  WEB-INF
Avatar billede arne_v Ekspert
16. november 2007 - 20:37 #6
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [RentABike-context.xml]; nested exception is java.io.FileNotFoundException: class path resource [RentABike-context.xml] cannot be opened because it does not exist


taler omkring classpath.

D.v.s. at RentABike-context.xml skal ligge i WEB-INF/classes !
Avatar billede arne_v Ekspert
16. november 2007 - 20:38 #7
Eller i en af jar filerne i WEB-INF/lib.

Jakarta Commons Logging er et lille bibiliotek som goer at den samme kode kan bruges med
baade log4j og java.util.logging.
Avatar billede dl Nybegynder
16. november 2007 - 20:55 #8
Jeg får nu denne fejl:

16-11-2007 20:39:08 org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@5e3974: display name [org.springframework.context.support.ClassPathXmlApplicationContext@5e3974]; startup date [Fri Nov 16 20:39:08 CET 2007]; root of context hierarchy
16-11-2007 20:39:08 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [application-context.xml]
16-11-2007 20:39:08 org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
INFO: Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext@5e3974]: org.springframework.beans.factory.support.DefaultListableBeanFactory@5e176f
16-11-2007 20:39:08 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@5e176f: defining beans [RentABike,commandLineView]; root of factory hierarchy
Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'CommandLineView' is defined
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:382)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:997)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:231)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:168)
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:883)
    at CommandLineView.main(CommandLineView.java:29)



Hvorfor det ?

arne_v kommer du med et svar?
Avatar billede arne_v Ekspert
16. november 2007 - 21:06 #9
Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'CommandLineView' is defined

du foersoeger at loade en CommandLineView bean som ikke er defineret

den skal nok lige checkes
Avatar billede arne_v Ekspert
16. november 2007 - 21:07 #10
og et svar
Avatar billede dl Nybegynder
16. november 2007 - 21:21 #11
Hvordan, den ser ud, som i bogen  :)
Avatar billede dl Nybegynder
16. november 2007 - 21:23 #12
fandt fejlen.

Takker.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester