Unable to load database connector - using JRC w/report connecting to Oracle
A simple Java program was created to test a Crystal Report using JRC. The Java program is a thick-client Swing desktop application (modified from an example of crxi_r2_migrating_rdc_to_jrc.pdf). The program failed to execute the report with the following error:
Unable to load database connector u2018com.crystaldecisions.reports.queryengine.driverImpl.DriverLoader'
It might be something simple to correct the problem, but I am not able to find related answers in the documentation and from the forum.
CR version is XI R2. The Java program was compiled and run using jdk1.4.2_13. Oracle is 10.2.
Do I have to use JDBC? or the CR Oracle driver will do? What needs to be setup? If I use JDBC, what do I need to setup (I tried to following the links in the forums or other documentation, but most of the links to http://support.businessobjects.com/.... are broken - i.e. re-route to the SAP support page but not directly linked to the articles)
When the report JRCTestReport.rpt was saved with the option "Save Data With Report", it works fine. So the problem is only with Oracle database driver, the other jars are fine.
In the report JRCTestReport.rpt the database properties are:
DatabaseDLL crdb_oralce.dll
Password
Server myTestDB
Trusted_Connection False
User ID MyUser
The crdb_oracle.dll is located at:
C:\Program Files\Business Objects\Common\3.5\bin
Files are stored in the following tree structure:
<Testing Folder>
JRCTest.java
JRCTest.class
WEB-INF
lib
All required JRC jars and CRConfig.xml
Reports
JRCTestReport.rpt
Java source code JRCTest.java
import java.awt.*;
import javax.swing.*;
import java.io.*;
import com.crystaldecisions.ReportViewer.*;
// Use this for talking to JRC in-process
import com.crystaldecisions.reports.sdk.*;
import com.crystaldecisions.sdk.occa.report.reportsource.*;
public class JRCTest
{
private static void createAndShowGUI()
{
try
{
//Make sure we have nice window decorations.
JFrame.setDefaultLookAndFeelDecorated(false);
//Create and set up the window.
JFrame frame = new JFrame("JRCTest");
frame.setTitle("JRCTest");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ReportViewerBean viewer = new ReportViewerBean();
System.out.println("ReportViewerBean.init");
viewer.init(new String[0], null, null, null);
System.out.println("new ReportClientDocument");
ReportClientDocument rpt = new ReportClientDocument();
try
{
System.out.println("Openning Report...");
rpt.open("JRCTestReport.rpt", 0);
}
catch (Exception ex)
{
System.out.println("Failed to open report");
System.out.println(ex.toString());
return;
}
try
{
System.out.println("logon...");
rpt.getDatabaseController().logon("myUser", "myPass");
}
catch (Exception ex)
{
System.out.println("Failed to logon");
System.out.println(ex.toString());
return;
}
System.out.println("ReportClientDocument.getReportSource");
IReportSource rptSource = rpt.getReportSource();
viewer.setReportSource(rptSource);
System.out.println("viewer.setReportSource");
frame.getContentPane().add
(viewer, BorderLayout.CENTER);
frame.setSize(700, 500);
frame.setVisible(true);
viewer.start();
}
catch (Exception exception)
{
System.out.println(exception.toString());
}
}
public static void main(String[] args)
{
javax.swing.SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
createAndShowGUI();
}
});
}
}
Execution result:
C:\tmp\CrystalJavaTest>java -classpath .;./WEB-INF/lib;./WEB-INF/lib/ReportViewe
r.jar;./WEB-INF/lib/jrcerom.jar;./WEB-INF/lib/jrcadapter.jar;./WEB-INF/lib/Concu
rrent.jar;./WEB-INF/lib/CrystalCharting.jar;./WEB-INF/lib/CrystalCommon.jar;./WE
B-INF/lib/CrystalContentModels.jar;./WEB-INF/lib/CrystalExporters.jar;./WEB-INF/
lib/CrystalExportingBase.jar;./WEB-INF/lib/CrystalFormulas.jar;./WEB-INF/lib/Cry
stalQueryEngine.jar;./WEB-INF/lib/CrystalReportEngine.jar;./WEB-INF/lib/CrystalR
eportingCommon.jar;./WEB-INF/lib/icu4j.jar;./WEB-INF/lib/keycodeDecoder.jar;./WE
B-INF/lib/log4j.jar;./WEB-INF/lib/MetafileRenderer.jar;./WEB-INF/lib/rasapp.jar;
./WEB-INF/lib/rascore.jar;./WEB-INF/lib/rpoifs.jar;./WEB-INF/lib/Serialization.j
ar;./WEB-INF/lib/URIUtil.jar;./WEB-INF/lib/xercesImpl.jar;./WEB-INF/lib/xml-apis
.jar JRCTest
Starting
Crystal Report Viewer 2.1.21.2
java.vendor = Sun Microsystems Inc.
java.version = 1.4.2_13
os.name = Windows XP
os.version = 5.1
os.arch = x86
ReportViewerBean.init
new ReportClientDocument
Openning Report...
logon...
ReportClientDocument.getReportSource
viewer.setReportSource
ERROR - JRCAgent1 detected an exception: Unable to load database connector 'com.
crystaldecisions.reports.queryengine.driverImpl.DriverLoader'.
at com.crystaldecisions.sdk.occa.report.lib.ReportSDKException.throwRepo
rtSDKException(Unknown Source)
at com.businessobjects.reports.sdk.b.i.if(Unknown Source)
at com.businessobjects.reports.sdk.b.i.a(Unknown Source)
at com.businessobjects.reports.sdk.b.i.byte(Unknown Source)
at com.businessobjects.reports.sdk.JRCCommunicationAdapter.request(Unkno
wn Source)
at com.crystaldecisions.proxy.remoteagent.y.a(Unknown Source)
at com.crystaldecisions.proxy.remoteagent.r.a(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.cf.a(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.ReportSource.a(Unkno
wn Source)
at com.crystaldecisions.sdk.occa.report.application.ReportSource.getPage
(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.AdvancedReportSource
.getPage(Unknown Source)
at com.crystaldecisions.sdk.occa.report.application.NonDCPAdvancedReport
Source.getPage(Unknown Source)
at com.businessobjects.crystalreports.viewer.core.rs.b.if(Unknown Source
)
at com.businessobjects.crystalreports.viewer.core.av.a(Unknown Source)
at com.businessobjects.crystalreports.viewer.core.av.run(Unknown Source)
at java.lang.Thread.run(Thread.java:534)
Unable to load database connector 'com.crystaldecisions.reports.queryengine.driv
erImpl.DriverLoader'.