gpt4 book ai didi

java - 使用 Cargo maven2 插件运行测试时出现 ClassNotFoundException : oracle. jdbc.OracleDriver

转载 作者:太空宇宙 更新时间:2023-11-04 12:17:41 25 4
gpt4 key购买 nike

我正在尝试对 Cargo maven2 插件运行一些功能测试。这些测试在不使用 Cargo maven2 插件启动时在本地 tomcat 服务器上运行良好。插件本身启动成功,但当我运行测试时,它们返回 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 的引用。

这是我的 cargo 配置:

       <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>

我是网络服务世界的新手,因此任何建议/指示将不胜感激。可能是我在某处缺少一些配置?

最佳答案

在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

关于java - 使用 Cargo maven2 插件运行测试时出现 ClassNotFoundException : oracle. jdbc.OracleDriver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39198477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com