0

私は私の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");

これを行うと、次のエラーが発生します。

クラス パス リソース [applicationContext.xml] で定義された名前が 'myMapClient' の Bean の作成中にエラーが発生しました: init メソッドの呼び出しに失敗しました。ネストされた例外は java.lang.NoClassDefFoundError: com/iplanet/ias/admin/common/ASException です

なぜそのクラスを探しているのかわかりませんか?私はコンテナの外ですべてをやろうとしています。したがって、そのクラスを探すべきではありません...しかし、それを機能させるために、ASExceptionというクラスを探してみたので、クラスパスに配置できましたが、ASExceptionクラスを見つけることができませんでした。

ポインタはありますか?

スタック トレースと私のコンパイル テスト/実行テスト ライブラリの画像 代替テキスト 代替テキスト 代替テキスト

解決策の編集 : すべてがコンテナーの外側にあると思っていましたが、コンテナーの外側にないものが 1 つあります。
プロパティ 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>
4

2 に答える 2

1

@Cletusorg.springframework.orm.ibatis.SqlMapClientFactoryBeanがコンパイルされたと言ったように、実行時の依存関係の問題は間違いなくありcom.iplanet.ias.admin.common.ASExceptionますが、クラスパスにありません-Springはそれを見つけることができません。ソースSqlMapClientFactoryBeanを調べて、どこASExceptionが呼び出されているかを確認する必要があります。Springには、すべての依存関係が含まれている必要があります。調査を行うときに、そこを調べることもできます。

于 2009-11-12T15:00:11.750 に答える
0

このクラスはコンパイル中に検出されましたが、実行中には検出されませんでした。

com/iplanet/ias/admin/common/ASException

そのため、プログラムを実行しているときに、使用しているSunアプリまたはポータルサーバーに属するこのクラスが見つからないようです。つまり、これはクラスパスエラーです。

于 2009-11-12T03:04:28.067 に答える