我试图在我的Java EE6应用程序(类名VisualizerRepository.java)中使用jdbc连接,我在nexus存储库中有jdbc驱动程序
该类必须执行存储过程并打印过程的结果。由于JPA 2.0不支持使用jdbc调用过程。
package com.nfsmith.crm.data.repository;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import oracle.jdbc.OracleTypes;
import org.jboss.logging.Logger;
@Named
@ApplicationScoped
public class VisualizerRepository
{
DataSource datasource;
Connection connection;
CallableStatement statement;
@PostConstruct
public void initDBConnection()
{
InitialContext context;
try
{
context = new InitialContext();
datasource = (DataSource) context.lookup("java:jboss/datasources/partmatchDatasource");
connection = null;
statement = null;
connection = datasource.getConnection();
}
catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void getJSonDataList()
{
try {
statement = connection.prepareCall("{call crm.PKG_CRM_RELATIONSHIP.getOrgViewDataJason(?,?,?)}");
int owner = 48156;
statement.setInt(1, owner);
int site = 10;
statement.setInt(2, site);
statement.registerOutParameter(3, OracleTypes.CURSOR);
statement.execute();
}
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
try {
statement.close();
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}`enter code here`
}
}
}
当我进行构建时看到编译错误,说包oracle.jdbc不存在且无法找到符号
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /C:/Users/rpalle/workspace/CRM/smith-crm-web/src/main/java/com/nfsmith/crm/data/repository/VisualizerRepository.java:[15,19] package oracle.jdbc does not exist
[ERROR] /C:/Users/rpalle/workspace/CRM/smith-crm-web/src/main/java/com/nfsmith/crm/data/repository/VisualizerRepository.java:[66,51] cannot find symbol
symbol: variable OracleTypes
location: class com.nfsmith.crm.data.repository.VisualizerRepository
[INFO] 2 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Smith CRM ......................................... SUCCESS [0.823s]
[INFO] Smith CRM Web ..................................... FAILURE [4.775s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.410s
[INFO] Finished at: Wed Aug 07 13:48:32 CDT 2013
[INFO] Final Memory: 36M/530M
[INFO] ------------------------------------------------------------------------
[WARNING] The requested profile "CRM_local" could not be activated because it does not exist.
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project smith-crm-web: Compilation failure: Compilation failure:
[ERROR] /C:/Users/rpalle/workspace/CRM/smith-crm-web/src/main/java/com/nfsmith/crm/data/repository/VisualizerRepository.java:[15,19] package oracle.jdbc does not exist
[ERROR] /C:/Users/rpalle/workspace/CRM/smith-crm-web/src/main/java/com/nfsmith/crm/data/repository/VisualizerRepository.java:[66,51] cannot find symbol
[ERROR] symbol: variable OracleTypes
[ERROR] location: class com.nfsmith.crm.data.repository.VisualizerRepository
[ERROR] -> [Help 1]
答案 0 :(得分:12)
ojdbc jar不在公共maven存储库中。 您可以手动将jar添加到本地存储库。
从以下网址下载jar
在您的存储库中安装
mvn install:install-file -Dfile={Path/to/your/ojdbc.jar} -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar
在您的pom中使用
<dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0</version> </dependency>
答案 1 :(得分:3)
可以从Oracle Maven Repository访问Oracle JDBC驱动程序,并提供一些额外的安全相关步骤 查看博客&#34; Get Oracle JDBC drivers and UCP from Oracle Maven Repository (without IDEs)&#34;更多细节。
答案 2 :(得分:0)
我试图让我从本地Maven存储库中提取jar,甚至在flatDir
闭包中使用repositories
,但都没有效果。最后,我在项目中创建了一个lib
文件夹,然后将jar放入其中并添加了
dependencies {
...
compile files('lib/ojdbc7.jar')
...
}
我认为这不是处理它的最漂亮的方法,但它确实有效,并且到目前为止已经足够了。
答案 3 :(得分:0)
我也遇到了类似的情况,在这种情况下,将会出现异常。
java: cannot access oracle.jdbc.OracleTypes error
我手动将ojdbc JAR安装到我的本地存储库。但是问题仍然存在。这是因为我安装了ojbc10.jar。由于某些原因,我认为此JAR名称中的数字类似于JDBC版本。但是它们与Java版本更加相关。我的项目使用的是Java JDK8。因此,在安装ojdbc8.jar后问题得以解决。
因此,在下载时请务必检查发行说明。已通过JDK8,JDK9,JDK11认证。
答案 4 :(得分:-1)
位于回答中的maven命令
(同时它取自http://www.mkyong.com/maven/how-to-add-oracle-jdbc-driver-in-your-maven-local-repository/)对我不起作用。但在删除 {}
字符后,一切都很好:
mvn install:install-file -Dfile=Path/to/your/ojdbc.jar -DgroupId=com.oracle
-DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar
另外,不要忘记将版本号添加到jar文件的名称,如ojdb6-11.2.0.jar