Subject Re: [Firebird-Java] FW: jdbc driver error
Author Mark Rotteveel
On 18-8-2017 14:57, Andrew Fletcher andrew.fletcher@...
[Firebird-Java] wrote:
> We start our sap pi system via SAP management console
> VM Name:
>
> SAP Java Server VM
> VM Vendor:
> SAP AG
>
> VM Java Version:
> 1.6.0_85
>
> VM Runtime Version:
> 6.1.072 24.71-b13
>
> Im wondering if the VM runtime version is the issue
> Tested with Jaybird-2.2.13-JDK_1.6.zip<https://github.com/FirebirdSQL/jaybird/releases/download/v2.2.13/Jaybird-2.2.13-JDK_1.6.zip> and Jaybird-3.0.1-JDK_1.8.zip<https://github.com/FirebirdSQL/jaybird/releases/download/v3.0.1/Jaybird-3.0.1-JDK_1.8.zip> same error as below

You are using Java 6, so you cannot use Jaybird-3.0.1-JDK_1.8.zip; that
version is for Java 8 (as indicated by the JDK_1.8 in the URL). You will
need to use Jaybird-2.2.13-JDK_1.6.zip as Jaybird 2.2.x is the last
version to support Java 6. Java 6 is not supported by Jaybird 3.

> We have SQL JDBC deployed and that works connecting to a SQL database
>
> Classpath environment variable set as system varible
> echo %classpath%
> E:\usr\sap\D30\DVEBMGS00\j2ee\cluster\bin\ext\com.sap.aii.adapter.lib\lib\jaybird-full-3.0.1.jar

Given that this classpath doesn't contain sqljdbc.jar, that confirms my
initial comment that the classpath environment variable is not used SAP.

> Driver deployed on SAP PI java
> antlr-runtime-3.4.jar

If you could have use Jaybird 3, this would have been the wrong
dependency (see
https://www.firebirdsql.org/file/documentation/drivers_documentation/java/3.0.1/release_notes.html#antlr-4-runtime),
for Jaybird 2.2 it is the right one.

> com.sap.aii.adapter.lib_api.jar
> connector-api-1.5.jar

Remove (see below)

> jaybird-full-3.0.1.jar

Replace with jaybird-2.2.13.jar (not jaybird-full!) for Java 6, see below

> log4j-core.jar
> sqljdbc.jar

In any case, given the presence of j2ee in the path, I suspect the
problem is that SAP ERP is a Java Enterprise Edition (Java EE)
environment. You will need to use jaybird-<version>.jar, and **not**
jaybird-full-<version>.jar. You will also need to **remove**
connector-api-1.5.jar.

The jaybird-full library contains the classes of connector-api-1.5.jar
next to the normal Jaybird classes, and in a Java EE environment, the
classes from connector-api-1.5.jar are (or should be) provided by the
application server. Some application servers will refuse to load classes
from jars that contain classes that are already provided by themselves.
I'm not sure if that is the case with SAP, but it is likely.

Using jaybird-<version>.jar instead should solve that (just make sure
you use a Java 6 (JDK 1.6) version!).

If this doesn't solve the problem, it would really helpful to have more
context from the logs, because I suspect that there are warnings or
errors in the log before the ClassNotFoundException.

Mark
--
Mark Rotteveel