我贴下测试类:
import org.springframework.jdbc.core.JdbcTemplate;import dispatcher.service.DsServer;
import dispatcher.service.DsService;
import dispatcher.service.JobServer;
import dispatcher.service.JobService;import dispatcher.pool.DBPool;public class Test {JdbcTemplate jdbcTemplate=(JdbcTemplate)DBPool.getBean("jdbcTemplate");public static void main(String args) throws ParseException{
         String message=test.doSpTest();
         System.out.println(message);
}
public String doSpTest(){
String message=null;
JobService js=new JobServer();
DsService ds=new DsServer();
DPJob job=js.getJobByJobName("SP_JOB2");
List<Param> params=js.getParamByJobName(job.getJobNm());
DbServerVo dbVo =ds.getDbByJobName(job.getRunServer());
try {
     AgentService agService=new AgentServiceImpl();
     message=agService.DoSp(job, dbVo, params);
} catch (Exception e) {
e.printStackTrace();
}
   return message;
}
}
下面是错误信息,我的spring配置文件里没有配置注入方式,只是用来获取数据库连接
Exception in thread "main" java.lang.NoClassDefFoundError: org.springframework.beans.FatalBeanException
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:883)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:826)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:283)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:880)
at dispatcher.pool.DBPool.getBean(DBPool.java:33)
at dispatcher.service.DsServer.<init>(DsServer.java:26)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)
at dispatcher.service.JobServer.<init>(JobServer.java:28)
at dispatcher.service.DsServer.<init>(DsServer.java:29)springJdbcTemplate

解决方案 »

  1.   

    org.springframework.beans-3.0.2.RELEASE.jar
    org.springframework.expression-3.0.2.RELEASE.jar 有吗
      

  2.   

    话说,lz的这个main方法里的东西关jdbcTemplate毛事啊。如果要或者jdbcTemplate这个bean的话,应该不是“JdbcTemplate jdbcTemplate=(JdbcTemplate)DBPool.getBean("jdbcTemplate");”这样获取吧不知道你那个DBPool的getBean方法是怎么写的。应该这样吧:ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-beans.xml");JdbcTemplate jdbcTemplate=(JdbcTemplate)context.getBean("jdbcTemplate");
    我用过一段时间的jdbcTemplate,但没碰到过lz提供的这种错误,不知道有没有帮助
      

  3.   

    java.lang.NoClassDefFoundError: org.springframework.beans.FatalBeanException
    错误说的很清楚了,没有找到FatalBeanException这个类,你该是Jar的问题,Jar包不要东拼西凑的,去官方下载开发库,然后使用库里面提供的jar文件。
      

  4.   

    JdbcTemplate jdbcTemplate=(JdbcTemplate)DBPool.getBean("jdbcTemplate");
    可能这种获取bean的方式有问题,就如楼上所说
    也可能这个jdbcTemplate就没被正确配置为一个spring bean
      

  5.   

    这两个据我观察应该是次第抛出的同质异常(严格说一个是Error,一个是Exception)
      

  6.   

    spring配置文件:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans>
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName"> <value>oracle.jdbc.driver.OracleDriver</value> </property>
    <property name="url"><value>jdbc:oracle:thin:@10.196.30.10:1521:olids</value></property>
    <property name="username"><value>olidsdev</value></property>
    <property name="password"><value>olidsdev</value></property>
    </bean>

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" singleton="false" >
    <property name="dataSource"><ref bean="dataSource" /></property>
    </bean> 

    </beans>
    至于DBPool就相当于我把读取spring配置文件放在这里面去了,这个类只是个单例.
    DBPool:
    public class DBPool { private ScheduledThreadPoolExecutor Pool = null;
    private IDbService DbService = null;
    private static ApplicationContext ctx = new ClassPathXmlApplicationContext(
    "schedulingContext.xml");// /**
     * @return the dbService
     */
    public IDbService getDbService() {
    return DbService;
    } private DBPool() { Pool = new ScheduledThreadPoolExecutor(300);
    } public static Object getBean(String beanName){
            return ctx.getBean(beanName);
       }   

    private static DBPool instance = new DBPool(); public static DBPool geInstance() {
    return instance;
    }
    }
      

  7.   


    前面的这个jar包有的,后面的这个没有,但是如果我不使用DsService ds=new DsServer();这中方式,把其中的方法全搬到一个测试类中去,执行是没有问题的。
      

  8.   


    这中获取bean的方式是没有问题的,现在发现,如果不是用接口和实现类,把实现类中的方法全搬到测试类中,直接调用,是可以的。
      

  9.   


    应该不是jar包的问题,我在spring.jar里找到FatalBeanException这个类了。还有,如果是jar包的问题,应该我其余的方法是不可以运行的,但是有的方法还是可以的。就不知道这是啥情况了
      

  10.   

    貌似是循环调用了,可能是我的JobServer中调用DsServer,而DsServer又调用JobServer,会是这种情况吗?
      

  11.   

    我觉得还是debug一下,看看到底是哪行引起的,因为这个异常可能有很多原因引起的。
      

  12.   

    互相调用又怎么会和NoClassDefFoundError发生直接关系?
      

  13.   


    你是说直接这样在测试类中调用
    private static ApplicationContext ctx = new ClassPathXmlApplicationContext(
    "schedulingContext.xml");
    ctx.getBean("jdbcTemplate");
    是没问题的?
      

  14.   


    肯定Debug过,报错信息就是从JobService js=new JobServer();DsService ds=new DsServer();开始,不能实例化。
      

  15.   


    你是说直接这样在测试类中调用
    private static ApplicationContext ctx = new ClassPathXmlApplicationContext(
    "schedulingContext.xml");
    ctx.getBean("jdbcTemplate");
    是没问题的?没问题的。不是Bean实例化的问题
      

  16.   

    之前那个错是很明显从这里爆出来的
    at dispatcher.pool.DBPool.getBean(DBPool.java:33)
    现在已经没这个问题了?
      

  17.   

    之前那个错是很明显从这里爆出来的
    at dispatcher.pool.DBPool.getBean(DBPool.java:33)
    现在已经没这个问题了?
    没问题的。DEBUG过程中,出错就是在这里 JobService js=new JobServer();DsService ds=new DsServer();问题是,我这里面只是些方法的实现,没啥别的东西。
      

  18.   

    这两个据我观察应该是次第抛出的同质异常(严格说一个是Error,一个是Exception)
    谢谢指正!