我的applicaionContext.xml中有以下内容

<bean id="IbatisDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="oracle.jdbc.OracleDriver"/>
    <property name="url" value="jdbc:oracle:thin:@123.210.85.56:1522:ORCL"/>
    <property name="username" value="mydb"/>
    <property name="password" value="mydbpwd"/>
</bean>


<bean id="myMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
  <property name="configLocation" value="classpath:sql-map-config-oracle.xml"/>
  <property name="dataSource" ref="IbatisDataSource"/>
 </bean>


然后在我的代码中,我有:

ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
SqlMapClient sqlclient = (SqlMapClient) ctx.getBean("myMapClient");


这样做给我以下错误:


使用名称创建bean时出错
类中定义的“ myMapClient”
路径资源
[applicationContext.xml]:调用
初始化方法失败;嵌套的
例外是
java.lang.NoClassDefFoundError:
com / iplanet / ias / admin / common / ASException


我不明白为什么要找那个班?我正在尝试在容器外进行所有操作。因此,它甚至都不应该在寻找该类...但是尽管如此,我还是试图寻找一个名为ASException的类,以便可以将其放在类路径中,但找不到ASException类。

有指针吗?

堆栈跟踪和我的编译测试/运行测试库的图像
java - 实例化容器外部的 Spring Bean (用于测试)-LMLPHP

java - 实例化容器外部的 Spring Bean (用于测试)-LMLPHP

java - 实例化容器外部的 Spring Bean (用于测试)-LMLPHP


编辑
解:
即使我以为一切都在容器外...有一件东西不在容器外。
注意属性configLocation:

<property name="configLocation" value="classpath:sql-map-config-oracle.xml"/>


sql-map-config-oracle.xml的实际内容是

<sqlMapConfig>
   <settings enhancementEnabled="true" useStatementNamespaces="true" />
    <transactionManager type="JDBC">
        <dataSource type="JNDI">
            <property name="DataSource" value="my/jndi/mydb" />
        </dataSource>
    </transactionManager>
<sqlMap resource="somemapping.xml"/>
</sqlMapConfig>


JNDI的东西不需要在那里!

sql-map-config-oracle.xml应该只是:

<sqlMapConfig>
   <settings enhancementEnabled="true" useStatementNamespaces="true" />
        <sqlMap resource="somemapping.xml"/>
</sqlMapConfig>

最佳答案

您肯定有运行时依赖项问题,因为@Cletus说org.springframework.orm.ibatis.SqlMapClientFactoryBean是用com.iplanet.ias.admin.common.ASException编译的,但是现在您的类路径中没有它了-Spr​​ing找不到它。您应该查看SqlMapClientFactoryBean的源代码以查看ASException的位置-Spring应该有一个dist,其中包含所有依赖项,您也可以在进行调查时查看那里。

07-24 13:17