8.2 Driver Load Errors

8.2.1 java.lang.ClassNotFoundException:com.novell.nds.dirxml.drivers.SAPshim.SAPDriver Shim

This is a fatal error that occurs when the class name for the SAPHRShim.jar is incorrect. Ensure that the Java class name is set on the Driver Module tab in a local installation and that the -class parameter is set in a Remote Loader configuration.

The proper class name is com.novell.nds.dirxml.driver.SAPHRShim.SAPDriverShim.

8.2.2 Error Occurs when Uninstalling the Driver

If you have installed the SAP HR driver on a server that does not have a Java Virtual Machine (JVM) installed on it, you receive the following error when you try to uninstall the driver.

No Java virtual machine could be found from your PATH
environment variable. You must install a VM prior to
running this program.

The problem occurs only if you install the SAP HR Management (JCO3) driver on a server that does not have Identity Manager or the Remote Loader installed on it.

Use the following workaround on Linux:

  1. Export PATH=<JAVA-HOME-PATH>/bin/:$PATH.

  2. Run the Uninstall script where the JAVA-HOME-PATH is the JAVA or the JRE install location.

    For more information, see Removing Objects from the Identity Vault in the NetIQ Identity Manager Setup Guide for Linux or Removing Objects from the Identity Vault in the NetIQ Identity Manager Setup Guide for Windows.

Use the following workaround on Windows:

From the command prompt, go to the SAP uninstaller location and run the following command:

"Uninstall NetIQ Identity Manager Drivers for SAP.exe" LAX_VM "<JAVA-HOME-PATH>\bin\java.exe"

Replace JAVA-HOME-PATH with the JAVA or the JRE install location.

8.2.3 Error DestinationDataProvider already registered

The error DestinationDataProvider already registered occurs, if you are running an SAP HR driver for JCO3 and an SAP User Management driver for JCO3 on the same Identity Manager engine.

The fix is to run the SAP HR driver and the SAP User Management driver with the Remote Loader. Each driver can register as a separate instance in JCO when the drivers are running with the Remote Loader. If the drivers are running locally, JCO uses the same instance for the drivers and that is what causes the error.

Here is a sample of the error:

DirXML Log Event -------------------
     Driver:   \IDMDT-RRGIRISH\n\test\SAP-HR
     Status:   Error
     Message:  Code(-9010) An exception occurred:
java.lang.IllegalStateException: DestinationDataProvider already registered
[com.novell.nds.dirxml.driver.sapumshim.RFCJCoDestinationProvider]
    at
com.sap.conn.jco.rt.RuntimeEnvironment.setDestinationDataProvider(RuntimeEnvironment.java:132)
    at
com.sap.conn.jco.ext.Environment.registerDestinationDataProvider(Environment.java:216)
    at
com.novell.nds.dirxml.driver.SAPHRShim.BapiCommon.registerJCOProviders(BapiCommon.java:509)
    at
com.novell.nds.dirxml.driver.SAPHRShim.SAPDriverShim.init(SAPDriverShim.java:110)
    at com.novell.nds.dirxml.engine.Driver.startShim(Driver.java:1314)
    at com.novell.nds.dirxml.engine.Driver.initialize(Driver.java:260)
    at com.novell.nds.dirxml.engine.Driver.<init>(Driver.java:232)
    at com.novell.nds.dirxml.engine.DriverEntry.run(DriverEntry.java:551)
    at java.lang.Thread.run(Thread.java:619)