我的项目是在 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 或服务器库中查找资源