Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Tomcat JNDI资源-未找到类:oracle.jdbc.xa.client.oraclexadasource_Java_Eclipse_Tomcat_Jndi - Fatal编程技术网

Java Tomcat JNDI资源-未找到类:oracle.jdbc.xa.client.oraclexadasource

Java Tomcat JNDI资源-未找到类:oracle.jdbc.xa.client.oraclexadasource,java,eclipse,tomcat,jndi,Java,Eclipse,Tomcat,Jndi,问题 每当我通过Eclipse启动Tomcat服务器时,总是会出现类未找到错误: SEVERE: Exception processing Global JNDI Resources javax.naming.NamingException: Class not found: oracle.jdbc.xa.client.OracleXADataSource at org.apache.naming.factory.BeanFactory.getObjectInstance(BeanFac

问题

每当我通过Eclipse启动Tomcat服务器时,总是会出现类未找到错误:

SEVERE: Exception processing Global JNDI Resources
javax.naming.NamingException: Class not found: oracle.jdbc.xa.client.OracleXADataSource
    at org.apache.naming.factory.BeanFactory.getObjectInstance(BeanFactory.java:136)
设置

我的server.xml文件的资源设置如下:

<GlobalNamingResources>
    <Resource name="sub1" auth="Container"
              type="oracle.jdbc.xa.client.OracleXADataSource"
              factory="org.apache.naming.factory.BeanFactory"
              user="****" password="*****"
              URL="**************************************" />
</GlobalNamingResources>

context.xml有一个如下所示的条目:

<ResourceLink name="dataSource/sub1" global="sub1" type="javax.sql.DataSource" /> 

在我的应用程序中,我使用的是Oracle的JDBC驱动程序-classes12.jar

问题

我需要在Tomcat服务器上修复什么,以便它能够找到合适的类-
oracle.jdbc.xa.client.oraclexadasource
。我的第一个猜测是,classes12.jar需要复制到服务器上某个文件夹中。我甚至不能完全确定Windows for Eclipse上的文件夹在哪里。。。任何帮助都将不胜感激


谢谢

假设
oraclexadasource
classes12.jar
中的一个类,最简单的修复方法是将该jar复制到

  • Tomcat 5:
    $CATALINA_HOME/common/lib
  • Tomcat 6:
    $CATALINA_HOME/lib
来自:

较旧Oracle版本的驱动程序可能会 作为*.zip文件分发,而不是 而不是*.jar文件。Tomcat将只使用 *.jar文件安装在$CATALINA_HOME/lib中


因此,是的,您必须将jar放入$CATALINA_HOME/lib

假设Tomcat 6,需要将所需的库复制到
$CATALINA_HOME\lib

从:

1。安装JDBC驱动程序

JDBC数据源JNDI的使用 资源工厂要求您 制作一个合适的JDBC驱动程序 Tomcat和internal都可用 类并将其添加到web应用程序。 这最容易通过以下方式实现: 安装驱动程序的JAR文件 进入$CATALINA_HOME/lib目录, 这使得驱动程序既可用又可用 到资源工厂和您的 应用程序


另外,我会避免使用
classes12.zip
。它仅用于Java1.2和1.3运行时环境。如果坚持使用Java1.4,请使用
ojdbc14.jar
。或者在Java 6或Java 5环境中使用推荐的
ojdbc6.jar
/
ojdbc5.jar

在tomcat的/common/lib目录中复制classes12.jar。

不是classes12.jar;这就是JDK1.2 vintage。您的Oracle JDBC驱动程序JAR应该与您的JDK和Oracle版本相匹配(例如,JDK1.6的ojdbc16.JAR)

对于Tomcat版本5.x,将其放入Tomcat/server/lib,对于Tomcat版本6.x及更高版本,将其放入/lib


我还建议不要更改server.xml文件。最好将这些信息放在项目的META-INF/context.xml文件中。

我觉得这是一个很好的解决方案。我正试图用MyEclipse 8.x+2查找Tomcat的根目录,如果我能做到的话。。。你的额外提示非常有用。我不再需要以上问题的答案,因为我不需要依赖服务器。再次感谢。。。我感到解放了,我很乐意帮忙。谢谢你让我知道。祝你好运