Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.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 lib文件夹的代码中使用ojdbc14 jar_Java_Maven_Tomcat_Jdbc - Fatal编程技术网

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

Java 如何在tomcat lib文件夹的代码中使用ojdbc14 jar,java,maven,tomcat,jdbc,Java,Maven,Tomcat,Jdbc,我的项目在maven。我决定将ojdbc14.jar引入到我的项目中,而不是将其保存在tomcat/lib文件夹中。因此,我使用mvn install:install file在本地存储库中安装了ojdbc14.jar。但正如我现在所理解的,最好将其移动到lib文件夹中,因为jdbc驱动程序的内存不足,这里已经讨论过了。 但问题是我正在使用一些从这个ojdbc14.jar导入的类。例如: import oracle.jdbc.OracleCallableStatement; import ora

我的项目在maven。我决定将ojdbc14.jar引入到我的项目中,而不是将其保存在tomcat/lib文件夹中。因此,我使用
mvn install:install file
在本地存储库中安装了ojdbc14.jar。但正如我现在所理解的,最好将其移动到lib文件夹中,因为jdbc驱动程序的内存不足,这里已经讨论过了。 但问题是我正在使用一些从这个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文件夹中,并且仍然能够在代码中访问此类而不会出现编译错误?

您需要的是maven范围。由于您已经将ojdbc14.jar放在tomcat lib文件夹中,因此它现在与tomcat提供的任何其他库(例如servlet)没有什么不同

假设这与compile非常相似,但表明您希望使用JDK 或在运行时提供依赖关系的容器。例如,当 要为Java企业版构建web应用程序,您需要 将ServletAPI和相关JavaEEAPI的依赖关系设置为 提供范围,因为web容器提供这些类。这 作用域仅在编译和测试类路径上可用,并且 不及物

请参阅示例用法,注意对于您的案例,还需要将提供的添加到此语法中。 如前所述,您需要将这个jar安装到maven存储库中

编译: 这是默认范围,在未指定任何范围时使用。编译依赖项在项目的所有类路径中都可用。此外,这些依赖关系将传播到依赖项目

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

运行时: 此范围表示编译时不需要依赖项,但执行时需要依赖项。它位于运行时和测试类路径中,但不在编译类路径中

测试: 此范围表示应用程序的正常使用不需要依赖项,仅在测试编译和执行阶段可用

系统: 这个范围与提供的类似,只是您必须提供显式包含它的JAR。工件始终可用,并且不会在存储库中查找

导入:(仅适用于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>

com.oracle
ojdbc14
10.2.0.2.0
假如

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

,但没有为ojdc14.jar定义maven依赖项。没有artifactId、组或版本。所以唯一重要的是工件名称,在本例中是ojdbc14.jar。我说得对吗?@Akhil你说得对,我添加了用法示例链接。我发现找不到ojdbc:ojdbc:jar:14,你还需要在maven本地存储库中安装它。虽然有一个maven命令你可以执行它,从存储库中手动删除文件会更容易。在windows文档和设置中这样做\your username\.m2或Linux上的$home/.m2