ClassNotFoundException: oracle.jdbc.OracleDriver when 运行 tests using cargo maven2 plugin

ClassNotFoundException: oracle.jdbc.OracleDriver when running tests using cargo maven2 plugin

我正在尝试 运行 在 cargo maven2 上进行一些功能测试 plugin.These 测试 运行 在本地 tomcat 服务器上正常启动时不使用 cargo maven2插入。插件本身成功启动,但是当我 运行 测试时,它们 return 500 错误代码带有以下跟踪:

Caused by: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'oracle.jdbc.OracleDriver'
 at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1429)
 at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
 at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)

 ... 109 more
Caused by: java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver
 at java.lang.ClassLoader.findClass(ClassLoader.java:531)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at persistence.spi.hibernate.TransformingClassLoader.loadClass(TransformingClassLoader.java:46)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
 at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:14  

我在我的 pom 中添加了 ojdbc 6 jar 并排除了对 ojdbc 5 和 ojdbc 14 的引用。

这是我的货物配置:

       <plugin>
        <groupId>org.codehaus.cargo</groupId>
        <artifactId>cargo-maven2-plugin</artifactId>
        <version>1.4.14</version>
        <configuration>
           <container>
              <containerId>tomcat7x</containerId>
              <type>installed</type>
              <zipUrlInstaller>
                 <url>http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.70/bin/apache-tomcat-7.0.70.zip</url>
                 <downloadDir>${project.build.directory}/downloads</downloadDir>
                 <extractDir>${project.build.directory}/extracts</extractDir>
              </zipUrlInstaller>
              <systemProperties>
                 <java.io.tmpdir>target/tmp</java.io.tmpdir>
              </systemProperties>
              <output>${project.build.directory}/cargo-container.log</output>
              <log>${project.build.directory}/cargo.log</log>
           </container>
           <deployables>
              <deployable>
                 <groupId>x.rest</groupId>
                 <artifactId>x-war</artifactId>
                 <type>war</type>
              </deployable>
           </deployables>
           <configuration>
              <type>standalone</type>
              <home>${project.build.directory}/tomcat7x/container</home>
              <properties>
                 <cargo.tomcat.ajp.port>9414</cargo.tomcat.ajp.port>
                                  <cargo.servlet.port>9484</cargo.servlet.port>
                 <cargo.rmi.port>9496</cargo.rmi.port>
                 <cargo.logging>high</cargo.logging>
                 <war>${project.build.directory}/x-war.war</war>
                 <!-- This section was added by me but didn't fix the problem -->
                 <cargo.datasource.datasource>
                    cargo.datasource.jndi=jdbc/DB|
                    cargo.datasource.type=javax.sql.DataSource|
                    cargo.datasource.driver=oracle.jdbc.OracleDriver|
                    cargo.datasource.url=jdbc:oracle:thin:abc/abc@domain.net:22:node1|
                    cargo.datasource.username=abc|
                    cargo.datasource.password=abc
                </cargo.datasource.datasource>
              </properties>
              <configfiles>
                 <configfile>
                    <file>${project.basedir}/src/test/resources/war-dependencies/stable-dev/context.xml</file>
                    <todir>conf</todir>
                    <tofile>context.xml</tofile>
                 </configfile>
              </configfiles>
              <files>
                 <file>
                    <file>${project.basedir}/src/test/resources/war-dependencies/stable-dev/service.keystore</file>
                    <todir>shared/classes</todir>
                 </file>
              </files>
           </configuration>
        </configuration>
        <executions>
           <!-- The executions here deal only with INTEGRATION-TEST phase. We are NOT hitting REST Service via tests in the TEST phase. We need to be assured that our container is already 
              up and running. So cargo is started in PRE-INTEGRATION-TEST phase. -->
           <execution>
              <id>start-container</id>
              <phase>pre-integration-test</phase>
              <goals>
                 <goal>stop</goal>
              </goals>
           </execution>
         <!--    <execution>
              <id>stop-container</id>
              <phase>post-integration-test</phase>
              <goals>
                 <goal>stop</goal>
              </goals>
           </execution>-->
        </executions>
     </plugin>   

我是 Web 服务领域的新手,所以任何 suggestions/pointers 都将不胜感激。可能是我在某处遗漏了一些配置?

您在 tomcat 上没有异常的原因可能是由于 Tomcat.

的 lib 文件夹中存在 ojdbc6.jar 文件

但是,由于法律问题,在 public maven 存储库中找不到 oracle jdbc 驱动程序 jar 文件。

这是从 maven 存储库获取 oracle jdbc 驱动程序的官方说明

Get Oracle JDBC drivers from the Oracle Maven Repository - NetBeans, Eclipse & Intellij

还有另一个简单直接的解决方案。

通过将 jar 文件复制到本地驱动器,将 jar 文件直接安装到本地存储库,打开命令提示符,转到 jar 文件的当前目录并执行以下命令

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dpackaging=jar -Dversion=11.2.0.4.0 -Dfile=ojdbc6.jar -DgeneratePom=true

开始使用了。我必须在容器部分中添加 ojdbc6 作为依赖项。