我正在敲打这个,但找不到任何解决方案。 我正在使用 jboss-fuse-6.1.0.redhat-379 服务器并在Jboss_home / deploy /文件夹中部署我的jar
我遇到的问题是我在运行应用程序时无法加载oracle ojdbc jar。我尝试在我的本地存储库中添加此ojdbc14.jar,然后在POM中添加依赖项,如:
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.4.0</version>
</dependency>
它成功解决了导入问题,但是当我在Jboss中部署我的jar并运行我的应用程序时,它会出错:
java.sql.SQLException:找不到合适的驱动程序 JDBC:预言:瘦:@ // IP:端口/ some_name
我也尝试在POM中添加ojdbc.jar:
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.4.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/ojdbc14-10.2.0.4.0.jar</systemPath>
</dependency>
但仍然相同&#34;找不到合适的驱动程序&#34;信息。 任何帮助如何在我的jar中添加ojdbc.jar?
****更新****
Java代码:
try
{
// File CP_file = new File("/home/path/to/ojdbc14.jar");
// DBFactory dbMethod = new DBFactory();
// dbMethod.addJarToClasspath(CP_file);
Class.forName ("oracle.jdbc.OracleDriver");
String dbURL = "jdbc:oracle:thin:@//ip:port/name";
String userID = "userid";
String password = "pass";
// dbMethod.isJarOnClassPath(CP_file);
Connection dbConnection=DriverManager.getConnection(dbURL,userID,password);
// getting exception on above line
答案 0 :(得分:1)
我有同样的问题,我解决了它
将此存储库放在您的pom文件中
<repository>
<id>codelds</id>
<url>https://code.lds.org/nexus/content/groups/main-repo</url>
</repository>
然后添加你的依赖
<!-- ORACLE JDBC driver, need install yourself -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.1.0</version>
</dependency>
答案 1 :(得分:0)
在system
中使用pom.xml
作用域依赖项时,依赖项的jar文件不会打包到二进制文件中。换句话说,jar不在类路径上。
尝试使用provided
范围的Maven。然后odbc-jar必须在JBoss的某个lib文件夹中,类似于Tomcat中的lib文件夹。
您可以将install
odbc-jar放入本地Maven存储库,然后在默认范围内包含依赖项。
如果您的方案是,该jar不可部署,因为它must
被放置在文件系统中的特定路径上,我会尝试在运行时将jar-File添加到类路径。在另一个上下文中,我能够使用以下代码片段部署和运行我的lib。
在你找到更好的东西之前,它有望成为一种解决方法:
private boolean addJarToClasspath( File jarFile )
{
try
{
URLClassLoader urlClassLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
Class<?> urlClass = URLClassLoader.class;
Method method = urlClass.getDeclaredMethod( "addURL", new Class<?>[] { URL.class } );
method.setAccessible( true );
method.invoke( urlClassLoader, new Object[] { jarFile.toURI().toURL() } );
System.out.println( jarFile.getAbsolutePath() + " dynamically added to classpath" );
return true;
}
catch (Exception e)
{
e.printStackTrace();
return false;
}
}
private boolean isJarOnClassPath( File jarFile )
{
URLClassLoader urlClassLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
URL[] urls = urlClassLoader.getURLs();
for ( URL url : urls )
{
File file = new File( url.getFile() );
if ( file.getPath().endsWith( jarFile.getName() ) )
{
System.out.println( jarFile.getAbsolutePath() + " is on classpath" );
return true;
}
}
return false;
}
答案 2 :(得分:0)
您可以使用Maven Bundle Plugin在包中嵌入JAR。 这还将负责在清单中添加正确的OSGi标头。
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Embed-Dependency>ojdbc6</Embed-Dependency>
</instructions>
</configuration>
</plugin>
无论如何,这不是一个好方法。我建议使用JPA或将Oracle JDBC驱动程序添加到lib/
文件夹并通过系统包导出它们。
答案 3 :(得分:0)
您可以使用wrap协议在karaf中安装
osgi:install -s wrap:mvn:groupid/artifactid/version