java - 如何在 tomcat lib 文件夹中的代码中使用 ojdbc14 jar

标签 java maven tomcat jdbc

<分区>

我的项目是在 maven 中。我决定将 ojdbc14.jar 引入我的项目,而不是将其保存在 tomcat/lib 文件夹中。因此,我使用 mvn install:install-file 在我的本地存储库中安装了 ojdbc14.jar。但据我所知,最好将它移动到 lib 文件夹,因为 jdbc 驱动程序的内存问题已经在这里讨论过 tomcat - memeory-leak . 但问题是我正在使用一些从这个 ojdbc14.jar 导入的类。例如。 :

import oracle.jdbc.OracleCallableStatement;
import oracle.jdbc.driver.OracleConnection;
import oracle.sql.ARRAY;
import oracle.sql.ArrayDescriptor;
import oracle.jdbc.driver.OracleResultSet;
import oracle.sql.BLOB;
import oracle.sql.CLOB;
import oracle.sql.ARRAY;
import oracle.sql.ArrayDescriptor;

如何从项目中删除我的 ojdbc14.jar 并将其移动到 lib 文件夹,并且仍然能够在代码中访问此类而不会出现编译错误?

最佳答案

编译: 这是默认范围,如果未指定则使用。编译依赖项在项目的所有类路径中都可用。此外,这些依赖项会传播到相关项目。

提供: 这很像编译,但表示您希望 JDK 或容器在运行时提供依赖项。例如,在为 Java Enterprise Edition 构建 Web 应用程序时,您可以将对 Servlet API 和相关 Java EE API 的依赖设置为提供的范围,因为 Web 容器提供了这些类。此范围仅在编译和测试类路径上可用,不可传递。

运行时: 这个作用域表明依赖不是编译所必需的,而是执行所必需的。它在运行时和测试类路径中,但不在编译类路径中。

测试: 该作用域表示该依赖对于应用程序的正常使用不是必需的,仅在测试编译和执行阶段可用。

系统: 此范围类似于提供的范围,只是您必须显式提供包含它的 JAR。 Artifact 始终可用,不会在存储库中查找。

导入:(仅适用于 Maven 2.0.9 或更高版本) 此范围仅用于该部分中 pom 类型的依赖项。它表示指定的 POM 应该替换为该 POM 部分中的依赖项。由于它们被替换,具有导入范围的依赖项实际上并不参与限制依赖项的传递性。

根据您的要求,您添加了 maven 依赖项

<dependency>
   <groupId>com.oracle</groupId>
   <artifactId>ojdbc14</artifactId>
   <version>10.2.0.2.0</version>
   <scope>provided</provided>
</dependency>

因此运行时服务器将从 JDK 或服务器库中查找资源

关于java - 如何在 tomcat lib 文件夹中的代码中使用 ojdbc14 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28576708/

相关文章:

java - 对于 JAVA SWT 中禁用的控件,工具提示不可见

java - Maven 程序集插件 NoClassDefFoundError

java - maven中获取完整的依赖图

java - Maven 构建导致 Java 1.7 出现 VerifyError

eclipse - 停止 Maven 索引更新 eclipse

java - 如何消除tomcat服务器的端口号

java - 如何更改错误无法调用 Tomcat 管理器 : Server returned HTTP response code: 403

java - 当没有符号的 0 等于并且更普遍被认为是正确的时候,为什么 Java 在 0 前面打印一个负号?

tomcat - 如何启用嵌入式 tomcat 日志记录

java - Jar文件作为java中的代理