如何解决"WebSphere API classes are not available"?

how to resolve "WebSphere API classes are not available"?

我安装了带有 WAS Liberty 的 Eclipse Mars,运行时试图设置数据源。这是我收到的错误:

"Could not initialize WebSphereDataSourceAdapter because WebSphere API classes are not available: java.lang.ClassNotFoundException: com.ibm.websphere.rsadapter.WSDataSource"

我的 server.xml

里有这个
<featureManager>
    <feature>javaee-7.0</feature>
    <feature>localConnector-1.0</feature>
    <feature>jdbc-4.1</feature>
    <feature>webProfile-7.0</feature>
</featureManager>

其他 SO 引用了瘦客户端 jar 文件,但 none 存在于我的 wasruntime/lib 目录中,也不存在于任何 346 个 jar 文件中。还有其他想法吗?

这是我的spring声明。

 <bean id="myDataSource" class="org.springframework.jdbc.datasource.WebSphereDataSourceAdapter">
   <property name="targetDataSource">
     <bean class="org.springframework.jndi.JndiObjectFactoryBean">
       <property name="jndiName" value="jdbc/db2"/>
     </bean>
   </property>
 </bean>

WebSphere Liberty 中不存在 class com.ibm.websphere.rsadapter.WSDataSource。它确实存在于 Traditional WebSphere 中,这可能是混淆的来源。

如果您可以控制指定 class 名称,您只需将其更新为正确的名称即可。

如果您无法控制它,这听起来像是 Spring 框架的错误。同时,您可以通过将 javax.sql.DataSource 指定为 proxyInterface 属性.

的值来解决此问题

将您的 spring 声明更改为以下内容:

<bean id="myDatasource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="jdbc/db2"/>
    <property name="proxyInterface"  value="javax.sql.DataSource" />
</bean>

(注:我也去掉了一层不必要的嵌套配置)

次要旁注:
您发布的功能列表中有一些额外的东西。 jdbc-4.1webProfile-7.0 功能包含在整个 javaee-7.0 功能中,因此您只需将功能管理器更改为:

<featureManager>
    <feature>javaee-7.0</feature>
    <feature>localConnector-1.0</feature>
</featureManager>