UnsatisfiedLinkError invoke of native method

Hi,
When the native method is invoked in the same Classloader as the native library is loaded, then everything is ok :-)
But when the native method is invoked in a "child" of the ClassLoader, which has loaded the native library, then a
java.lang.UnsatisfiedLinkError: <methodname>
is thrown.
Has anybody an idea?
Thank you for your assistance
Johannes Rameder

Hi,
Here is a small test example for solaris for better understanding.
I have tested this with solaris 9.
Put all files in a directory asst/test
---JNISmallTestHelper.java---
package asst.test;
public class JNISmallTestHelper {
  public JNISmallTestHelper() {
    printClassLoaderChain(this);
    JNISmallTest tmp = new JNISmallTest();
    int i = tmp.NoArgs();
    System.out.println("result of NoArgs is "+i);
  private static void printClassLoaderChain(Object o) {
    for (ClassLoader cl = o.getClass().getClassLoader(); cl != null; cl = cl.getParent()) {
      System.out.println("H: "+cl.toString());
---JNISmallTest.java---
package asst.test;
public class JNISmallTest {
  public JNISmallTest() {
    printClassLoaderChain(this);
  public native int NoArgs();
  private static void printClassLoaderChain(Object o) {
    for (ClassLoader cl = o.getClass().getClassLoader(); cl != null; cl = cl.getParent()) {
      System.out.println("J: "+cl.toString());
---JNISmallTestMain.java---
package asst.test;
import java.net.URL;
import java.net.URLClassLoader;
public class JNISmallTestMain {
  public JNISmallTestMain() {
    try {
      System.out.println("system "+ClassLoader.getSystemClassLoader());
      printClassLoaderChain(this);
      System.loadLibrary("JNITest");
      URLClassLoader ucl = new URLClassLoader(new URL[] {new URL("file:JNITest.jar")});
      ucl.loadClass("asst.test.JNISmallTestHelper").newInstance();
    } catch (Exception e) {
      System.out.println("Load exception " + e.toString());
      e.printStackTrace();
  public static void main (String[] args) {
    new JNISmallTestMain();
  private static void printClassLoaderChain(Object o) {
    for (ClassLoader cl = o.getClass().getClassLoader(); cl != null; cl = cl.getParent()) {
      System.out.println("M: "+cl.toString());
---JNITest.c---
#define JNITest_c
static char rcsid[] = "$Id:$";
#include <stdio.h>
#include <stdlib.h>
#include "JNITest.h"
JNIEXPORT jint JNICALL Java_asst_test_JNISmallTest_NoArgs (JNIEnv * env, jclass cls) {
   printf("*Called NoArgs in shared C library*\n");
   return 5;
---makeNOK.sh---
rm -rf *.class *.jar *.so *.o *.h TestMain
javac -classpath ../.. *.java
javah -classpath ../.. -o JNITest.h asst.test.JNISmallTest
cd ../..
jar cvf asst/test/JNITest.jar asst/test/JNISmallTestHelper.class asst/test/JNISmallTest.class
cd asst/test
rm JNISmallTestHelper.class
rm JNISmallTest.class
gcc -g -fPIC -I${JAVA_HOME}/include -I${JAVA_HOME}/include/solaris -c *.c
gcc -g -fPIC -shared -W1 --soname=libJNITest.so JNITest.o -o libJNITest.so
gcc -g -fPIC -L. -lJNITest TestMain.o -o TestMain
---makeOK.sh---
rm -rf *.class *.jar *.so *.o TestMain
javac -classpath ../.. *.java
javah -classpath ../.. -o JNITest.h asst.test.JNISmallTest
cd ../..
jar cvf asst/test/JNITest.jar asst/test/JNISmallTestHelper.class
cd asst/test
rm JNISmallTestHelper.class
gcc -g -fPIC -I${JAVA_HOME}/include -I${JAVA_HOME}/include/solaris -c *.c
gcc -g -fPIC -shared -W1 --soname=libJNITest.so JNITest.o -o libJNITest.so
gcc -g -fPIC -L. -lJNITest TestMain.o -o TestMain
---run.sh---
export LD_LIBRARY_PATH=.:/usr/lib:/usr/local/lib
echo "#start test with java"
java -cp ../.. asst.test.JNISmallTestMain
echo
echo "#start test with C"
TestMain
---TestMain.c---
#define testmain_c
static char rcsid[] = "$Id: TestMain.c,v 1.4 2004/03/16 20:20:54 neiExp $";
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char** argv) {
   printf("Calling NoArgs from C Main Program\n");
   printf("NoArgs returned %d to calling C program\n",
      Java_asst_test_JNISmallTest_NoArgs(0, 0));
   printf("After NoArgs call\n");
   exit(0);
}call makeOK.sh and run.sh
#start test with java
system sun.misc.Launcher$AppClassLoader@10dd1f7
M: sun.misc.Launcher$AppClassLoader@10dd1f7
M: sun.misc.Launcher$ExtClassLoader@53c015
H: java.net.URLClassLoader@108786b
H: sun.misc.Launcher$AppClassLoader@10dd1f7
H: sun.misc.Launcher$ExtClassLoader@53c015
J: sun.misc.Launcher$AppClassLoader@10dd1f7
J: sun.misc.Launcher$ExtClassLoader@53c015
Called NoArgs in shared C library
result of NoArgs is 5
#start test with C
Calling NoArgs from C Main Program
Called NoArgs in shared C library
NoArgs returned 5 to calling C program
After NoArgs call
Here you can see that the classloader which loads the native library is the same as the classloader which loads the class who invokes the native method.
then call makeOK.sh and run.sh
#start test with java
system sun.misc.Launcher$AppClassLoader@10dd1f7
M: sun.misc.Launcher$AppClassLoader@10dd1f7
M: sun.misc.Launcher$ExtClassLoader@53c015
H: java.net.URLClassLoader@108786b
H: sun.misc.Launcher$AppClassLoader@10dd1f7
H: sun.misc.Launcher$ExtClassLoader@53c015
J: java.net.URLClassLoader@108786b
J: sun.misc.Launcher$AppClassLoader@10dd1f7
J: sun.misc.Launcher$ExtClassLoader@53c015
Exception in thread "main" java.lang.UnsatisfiedLinkError: NoArgs
at asst.test.JNISmallTest.NoArgs(Native Method)
at asst.test.JNISmallTestHelper.<init>(JNISmallTestHelper.java:9)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
at java.lang.Class.newInstance0(Class.java:308)
at java.lang.Class.newInstance(Class.java:261)
at asst.test.JNISmallTestMain.<init>(JNISmallTestMain.java:18)
at asst.test.JNISmallTestMain.main(JNISmallTestMain.java:28)
#start test with C
Calling NoArgs from C Main Program
Called NoArgs in shared C library
NoArgs returned 5 to calling C program
After NoArgs call
The classloaders are different.

Similar Messages

  • UnsatisfiedLinkError,   Load Library Successfully, Native Method Not Found

    I am using JNI to call a ".dll" file I made on windows.
    I got the exception:
    Exception in thread "Thread-0" java.lang.UnsatisfiedLinkError: com.aspectgaming.core.io.JniInnocore.Dpci.waitEvent(Ljava/lang/Object;J)I
    at com.aspectgaming.core.io.JniInnocore.Dpci.waitEvent(Native Method)
    at com.aspectgaming.core.io.JniInnocore.IDLPThread.run(IDLPThread.java:19)
    at java.lang.Thread.run(Unknown Source)
    The code for loading c dll library:
    URL url = Thread.currentThread().getContextClassLoader().getResource("");
    String baseClassPath = url.getPath();
    System.load(baseClassPath "com/aspectgaming/libjnidpcicore.dll");+
    The  ".dll"  file is already loaded,  because when I changed the dll file name to any other ones,  a "library file not found" exception will be caught.
    The problem is Dpci.waitEvent and all the native methods could not be found.
    I used a PE viewer to view the dll exports I got:
    Export table
    Characteristics=0, TimeDateStamp=1237366066, MajorVersion=0, MinorVersion=0, Name=36994, Base=1, NumberOfFunctions=9, NumberOfNames=9, AddressOfFunctions=36904, AddressOfNames=36940, AddressOfNameOrdinals=36976,
    TimeDateStamp:Wed Mar 18 16:47:46 GMT+08:00 2009
    Java_com_aspectgaming_core_io_JniInnocore_Dpci_getEventName@12 (Ordinal: 1, Entry Point RVA: 147ah (5,242))
    Java_com_aspectgaming_core_io_JniInnocore_Dpci_getNumOfEvents@8 (Ordinal: 2, Entry Point RVA: 11a5h (4,517))
    Java_com_aspectgaming_core_io_JniInnocore_Dpci_getNumOfInputPorts@12 (Ordinal: 3, Entry Point RVA: 1789h (6,025))
    Java_com_aspectgaming_core_io_JniInnocore_Dpci_getSramSize@8 (Ordinal: 4, Entry Point RVA: 1190h (4,496))
    Java_com_aspectgaming_core_io_JniInnocore_Dpci_readEvent@12 (Ordinal: 5, Entry Point RVA: 11bah (4,538))
    Java_com_aspectgaming_core_io_JniInnocore_Dpci_readPort@12 (Ordinal: 6, Entry Point RVA: 17a7h (6,055))
    Java_com_aspectgaming_core_io_JniInnocore_Dpci_waitEvent@20 (Ordinal: 7, Entry Point RVA: 14b8h (5,304))
    Java_com_aspectgaming_core_io_JniInnocore_Dpci_waitIOPort@24 (Ordinal: 8, Entry Point RVA: 17dbh (6,107))
    Java_com_aspectgaming_core_io_JniInnocore_Dpci_writePort@16 (Ordinal: 9, Entry Point RVA: 182ch (6,188))
    The java class "Dpci" is exactly in this package : com.aspectgaming.core.io.JniInnocore;
    I compiled it by gcc on linux as a ".so" file and everything is working on linux.
    On windows I am compiling this by Mingw gcc.
    Here is the make file on Windows which is used by Mingw32-make:
    dpci_core:
    gcc -o ../../../java/com/aspectgaming/libjnidpcicore.dll -shared -IC:\jdk1.6.0_10\include -IC:\jdk1.6.0_10\include\win32 -I'D:\Program Files\Innocore Gaming Ltd\DirectPCI SDK & Run-time\include' dpci_core.c libdpci_static.lib
    dpci_core.c is my code file and  libdpci_static.lib is the library that my c dll will depend on.
    Any thought to this UnsatisfiedLinkError exception problem?
    Thanks!

    I recompile my codes under visual c++ 2008 express on Windows XP professional, and I have already got rid of this problem.
    But when I move the compiled java jar application to windows xp embedded edition, an exception will be caught:
    C:\AspectGamingCore>java -jar Aspect.jar
    Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\AspectGamingCore\l
    ib\libjnidpcicore.dll: This application has failed to start because the applicat
    ion configuration is incorrect. Reinstalling the application may fix this proble
    m
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(Unknown Source)
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.load0(Unknown Source)
    at java.lang.System.load(Unknown Source)
    at com.aspectgaming.core.io.JniInnocore.Dpci.loadLibraryOnWindows(Unknow
    n Source)
    at com.aspectgaming.core.io.JniInnocore.DpciTest.main(Unknown Source)
    I don't know if there is any compatible problem bewteen xp and xpe but one possible reason is that xpe may be lack of some dll files like msvcr90.dll.
    So I tried to compile the dll as static library in vc++2008, but this does not run even on my winxp professional:
    Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\AspectGamingCore\l
    ib\libjnidpcicore.dll: %1 is not a valid Win32 application
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(Unknown Source)
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.load0(Unknown Source)
    at java.lang.System.load(Unknown Source)
    at com.aspectgaming.core.io.JniInnocore.Dpci.loadLibraryOnWindows(Unknow
    n Source)
    at com.aspectgaming.core.io.JniInnocore.DpciTest.main(Unknown Source)
    Could JNI call a c static library? Why it says "not a valid Win32 application"?

  • FATAL ERROR in native method: Wrong method ID used to invoke a Java method

    When calling the same method second time , I get message ::
    <FATAL ERROR in native method: Wrong method ID used to invoke a Java method>
    void myFunction(int myVal)
    JNIEnv *env = NULL;
    jclass odbcconnls;
    jint res;
    printf("\nInitilaizing class ");
    res = (jvm)->AttachCurrentThread((void **)&env,NULL);
    if (res < 0) {
    fprintf(stderr, "Can't get Env \n");
    (jvm)->DestroyJavaVM();
    return SQL_ERROR;          
    if(res == JNI_OK)
    printf("\nThe env is initialized ");
    if(*(&env) == NULL)
    printf(" the env is NULL ");
    printf("\nenv :::::: %s ", env);     
    // the jobject (dbc->actualConn) is a global reference
    odbcconnls = (env)->GetObjectClass(dbc->actualConn);
    if (odbcconnls == NULL) {
    goto destroy;
    switch(myVal){
    case 1:
    jmethodID methodId ;
    jboolean jbool;
    SQLINTEGER Val = (SQLINTEGER )Value;
    SQLINTEGER val1 = *Val;
    methodId = (env)->GetMethodID( odbcconnls,"myFun1","(Z)V");
    if(methodId == NULL){
    goto destroy;
    if(val1 == SQL_FALSE )
    jbool = 0;
    else
    jbool =1;
    env->CallVoidMethod(dbc->actualConn,methodId,jbool);
    env->DeleteLocalRef((jobject)res);
    env->DeleteLocalRef((jobject)odbcconnls);
    env->DeleteLocalRef((jobject)methodId);
    jvm->DetachCurrentThread();
    return ;
    case 2 :
    jmethodID methodId1 ;
    SQLUINTEGER* Level;
    methodId1 = (env)->GetMethodID( odbcconnls,"myFun2","(I)V");
    if(methodId1 == NULL){
    goto destroy;
    Level = (SQLUINTEGER *)Value;
    env->CallVoidMethod(dbc->actualConn,methodId1,(int)*Level);
    dbc->txn_isolation = (SQLUINTEGER)Value;
    env->DeleteLocalRef((jobject)res);
    env->DeleteLocalRef((jobject)odbcconnls);
    env->DeleteLocalRef((jobject)methodId1);
    jvm->DetachCurrentThread();
    return ;
    case 3 :
    SQLCHAR* Cate;
    jmethodID methodId2 ;
    jstring jStrCat;
    methodId2 = (env)->GetMethodID(odbcconnls,"myFun3","(Ljava/lang/String;)V");
    if(methodId2 == NULL){
    goto destroy;
    Cate = new SQLCHAR[20];
    strcpy((char *)CCatalog,(char *)Value);
    jStrCat = env->NewStringUTF((char *) Cate);
    printf("\n got jSTring ");
    env->CallVoidMethod(dbc->actualConn,methodId2,jStrCat);
    printf("\n after called method ");
    int len = strlen((char *)Cate);
    dbc->Cate = new SQLCHAR[len+1];
    strcpy((char *)dbc->Cate,(char *)Cate);
    printf("\n copied result ");
    env->DeleteLocalRef((jobject)res);
    env->DeleteLocalRef((jobject)odbcconnls);
    env->DeleteLocalRef((jobject)methodId2);
    jvm->DetachCurrentThread();
    return ;
    destroy:
    if ((env)->ExceptionOccurred()) {
    (env)->ExceptionDescribe();
    jvm->DetachCurrentThread();
    (jvm)->DestroyJavaVM();
    return SQL_ERROR;
    When case 1 is called second time this error is thrown..
    plz help me..
    Thanx
    MittalSunita.

    When calling the same method second time , I get
    message ::
    <FATAL ERROR in native method: Wrong method ID used
    d to invoke a Java method>
    void myFunction(int myVal)
    JNIEnv *env = NULL;
    jclass odbcconnls;
    jint res;
    printf("\nInitilaizing class ");
    res = (jvm)->AttachCurrentThread((void **)&env,NULL);
    if (res < 0) {
    fprintf(stderr, "Can't get Env \n");
    (jvm)->DestroyJavaVM();
    return SQL_ERROR;          
    if(res == JNI_OK)
    printf("\nThe env is initialized ");
    if(*(&env) == NULL)
    printf(" the env is NULL ");
    printf("\nenv :::::: %s ", env);     
    // the jobject (dbc->actualConn) is a global
    reference
    odbcconnls = (env)->GetObjectClass(dbc->actualConn);
    if (odbcconnls == NULL) {
    goto destroy;
    switch(myVal){
    case 1:
    jmethodID methodId ;
    jboolean jbool;
    SQLINTEGER Val = (SQLINTEGER )Value;
    SQLINTEGER val1 = *Val;
    methodId = (env)->GetMethodID(
    ( odbcconnls,"myFun1","(Z)V");
    if(methodId == NULL){
    goto destroy;
    if(val1 == SQL_FALSE )
    jbool = 0;
    else
    jbool =1;
    env->CallVoidMethod(dbc->actualConn,methodId,jbool);
    env->DeleteLocalRef((jobject)res);
    env->DeleteLocalRef((jobject)odbcconnls);
    env->DeleteLocalRef((jobject)methodId);
    jvm->DetachCurrentThread();
    return ;Why do you delete a local reference???
    Did you ever call the get local reference?
    case 2 :
    jmethodID methodId1 ;
    SQLUINTEGER* Level;
    methodId1 = (env)->GetMethodID(
    ( odbcconnls,"myFun2","(I)V");
    if(methodId1 == NULL){
    goto destroy;
    Level = (SQLUINTEGER *)Value;
    env->CallVoidMethod(dbc->actualConn,methodId1,(int)*Le
    el);
    dbc->txn_isolation = (SQLUINTEGER)Value;
    env->DeleteLocalRef((jobject)res);
    env->DeleteLocalRef((jobject)odbcconnls);
    env->DeleteLocalRef((jobject)methodId1);
    jvm->DetachCurrentThread();
    return ;
    case 3 :
    SQLCHAR* Cate;
    jmethodID methodId2 ;
    jstring jStrCat;
    methodId2 =
    (env)->GetMethodID(odbcconnls,"myFun3","(Ljava/lang/St
    ing;)V");
    if(methodId2 == NULL){
    goto destroy;
    Cate = new SQLCHAR[20];
    strcpy((char *)CCatalog,(char *)Value);
    jStrCat = env->NewStringUTF((char *) Cate);
    printf("\n got jSTring ");
    env->CallVoidMethod(dbc->actualConn,methodId2,jStrCat)
    printf("\n after called method ");
    int len = strlen((char *)Cate);
    dbc->Cate = new SQLCHAR[len+1];
    strcpy((char *)dbc->Cate,(char *)Cate);
    printf("\n copied result ");
    env->DeleteLocalRef((jobject)res);
    env->DeleteLocalRef((jobject)odbcconnls);
    env->DeleteLocalRef((jobject)methodId2);
    jvm->DetachCurrentThread();
    return ;
    destroy:
    if ((env)->ExceptionOccurred()) {
    (env)->ExceptionDescribe();
    jvm->DetachCurrentThread();
    (jvm)->DestroyJavaVM();
    return SQL_ERROR;
    When case 1 is called second time this error is
    thrown..
    plz help me..
    Thanx
    MittalSunita.

  • JDeveloper 10g OCJ JDBC UnsatisfiedLinkError: make_c_state(Native Method)

    I have just installed 10g 9.0.5.2(build 1618) and get the following error when I try and use the OCI driver.
    java.lang.UnsatisfiedLinkError: make_c_state
         at oracle.jdbc.oci8.OCIDBAccess.make_c_state(Native Method)
         at oracle.jdbc.oci8.OCIDBAccess.logon(OCIDBAccess.java:458)
         at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:377)
         at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:515)
    This was working in the JDeveloper 9i I was previously using.
    The README.html for 10g talks about the OCI drivers not being available until 10g App server is released and installing " a different version of the JDBC drivers in JDeveloper (see the JDeveloper Help for details", but I can't find this information in the Help.
    Anyone know the solution?
    Thanks,
    Richard

    I include Oracle9iAS and Oracle9i Client bin into PATH, I still got java.lang.UnsatisfiedLinkError: make_c_state
    error in JDeveloper 10g(9.0.5.1)

  • Problem finding native methods in java packages

    Hi,
    I have a java class which uses some native methods written in OCamL. I wrote a C file which calls the OCamL code, and created the corresponding shared library using the jni. I then tested my java file and everything works fine, I can nicely call the OCamL functions. However, I need this java file to be included in a package, but whenever I add the line:
    package somepackage;
    on top of the java code, my java file simply doesn't seem to find the C and OCamL implementation anymore :
    javac -cp :./path/of/somepackage
    -Djava.library.path=/full/path/of/somepackage MyProgram args
    Exception in thread "main" java.lang.UnsatisfiedLinkError:functionName
    at somepackage.ClassName.functionName(NativeMethod)
    I have of course put everything (java, C, .h , libsomelibrary.so, and OCamL files) in a directory called somepackage, and written another java file which creates an instance of the first one from outside the package, imports the package, and calls its methods in main(). It just doesn't work anymore.
    I then added a simple hello-world function (not C nor OCamL code) to the java file inside the package. And when invoked from outside, it worked. Question is then... Am I forgetting something to be done, in order to get C and CamL files efectively included in the java package (same as "package somepackage;" in C or OCaml, perhaps)??? Why isn't the java file able to find them inside its very own directory (having into account that without the package definition it worked well)?
    Thanks,
    PS Im using jsdk 1.4.1 on lunyx redhat 8.0

    Did you change the name of the function in the library, too?
    If the function name was
    "Java_YourClass_functionname",
    it should be now
    "Java_path_to_your_package_YourClass_functionname".

  • EXCEPTION_ACCESS_VIOLATION  while calling a native method.....

    Hi guys,
    i am trying to call a native method from my java code, but i am getting this following error,
    # An unexpected error has been detected by HotSpot Virtual Machine:
    # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x052bd55f, pid=2740, tid=3884
    # Java VM: Java HotSpot(TM) Client VM (1.5.0_07-b03 mixed mode, sharing)
    # Problematic frame:
    # C [F3BC1ENG.DLL+0xd55f]
    In the log file,
    # An unexpected error has been detected by HotSpot Virtual Machine:
    # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x052bd55f, pid=2740, tid=3884
    # Java VM: Java HotSpot(TM) Client VM (1.5.0_07-b03 mixed mode, sharing)
    # Problematic frame:
    # C [F3BC1ENG.DLL+0xd55f]
    --------------- T H R E A D ---------------
    Current thread (0x03b26e50): JavaThread "httpWorkerThread-8080-0" daemon [_thread_in_native, id=3884]
    siginfo: ExceptionCode=0xc0000005, reading address 0x05e71000
    Registers:
    EAX=0x31304443, EBX=0x05d048f0, ECX=0x0c4c0d16, EDX=0x05e70000
    ESP=0x2c76ef38, EBP=0x2c76f034, ESI=0x05e71000, EDI=0x05d06d20
    EIP=0x052bd55f, EFLAGS=0x00010213
    Top of Stack: (sp=0x2c76ef38)
    0x2c76ef38: 00000001 052a9264 2c76f228 052a92a4
    0x2c76ef48: 01190002 00000000 00000000 00000000
    0x2c76ef58: 00000000 ffffffff 00000002 05d05d38
    0x2c76ef68: 00000000 00000000 00000000 00000000
    0x2c76ef78: ffffffff 7c9106eb 00000004 00000000
    0x2c76ef88: 00000000 00000000 00000000 00000000
    0x2c76ef98: 00000000 00000000 00000000 00000000
    0x2c76efa8: 00000000 052bf3e1 2c76efd4 0000101f
    Instructions: (pc=0x052bd55f)
    0x052bd54f: 00 8b 7c 24 2c 8b 4a 18 8d 72 18 8b c1 c1 e9 02
    0x052bd55f: f3 a5 8b c8 eb 16 8b b4 24 bc 00 00 00 8b 7c 24
    Stack: [0x2c670000,0x2c770000), sp=0x2c76ef38, free space=1019k
    Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
    C [F3BC1ENG.DLL+0xd55f]
    Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
    j palmsecuresdk.sample.PvsAuthenticationJNI.identifyMatch(I[BLjava/util/List;ILjava/util/List;)I+0
    j packService.palmsImpl.identify([B)Ljava/lang/String;+55
    j packService.palmsSEI_Tie.invoke_identify(Lcom/sun/xml/rpc/server/StreamingHandlerState;)V+50
    j packService.palmsSEI_Tie.processingHook(Lcom/sun/xml/rpc/server/StreamingHandlerState;)V+58
    j com.sun.xml.rpc.server.StreamingHandler.handle(Lcom/sun/xml/rpc/spi/runtime/SOAPMessageContext;)V+819
    j com.sun.xml.rpc.server.http.JAXRPCServletDelegate.doPost(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V+394
    j com.sun.enterprise.webservice.JAXRPCServlet.doPost(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V+139
    j javax.servlet.http.HttpServlet.service(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V+139
    j javax.servlet.http.HttpServlet.service(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V+30
    j org.apache.catalina.core.ApplicationFilterChain.servletService(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Ljavax/servlet/Servlet;Lorg/apache/catalina/util/InstanceSupport;)V+93
    j org.apache.catalina.core.StandardWrapperValve.invoke(Lorg/apache/catalina/Request;Lorg/apache/catalina/Response;)I+644
    j org.apache.catalina.core.StandardPipeline.doInvoke(Lorg/apache/catalina/Request;Lorg/apache/catalina/Response;)V+77
    j org.apache.catalina.core.StandardPipeline.invoke(Lorg/apache/catalina/Request;Lorg/apache/catalina/Response;)V+3
    j org.apache.catalina.core.StandardContextValve.invokeInternal(Lorg/apache/catalina/Wrapper;Lorg/apache/catalina/Request;Lorg/apache/catalina/Response;)I+238
    j org.apache.catalina.core.StandardContextValve.invoke(Lorg/apache/catalina/Request;Lorg/apache/catalina/Response;)I+252
    j org.apache.catalina.core.StandardPipeline.doInvoke(Lorg/apache/catalina/Request;Lorg/apache/catalina/Response;)V+77
    j com.sun.enterprise.web.WebPipeline.invoke(Lorg/apache/catalina/Request;Lorg/apache/catalina/Response;)V+53
    j org.apache.catalina.core.StandardHostValve.invoke(Lorg/apache/catalina/Request;Lorg/apache/catalina/Response;)I+89
    j org.apache.catalina.core.StandardPipeline.doInvoke(Lorg/apache/catalina/Request;Lorg/apache/catalina/Response;)V+77
    j com.sun.enterprise.web.VirtualServerPipeline.invoke(Lorg/apache/catalina/Request;Lorg/apache/catalina/Response;)V+149
    j org.apache.catalina.core.ContainerBase.invoke(Lorg/apache/catalina/Request;Lorg/apache/catalina/Response;)V+6
    j org.apache.catalina.core.StandardEngineValve.invoke(Lorg/apache/catalina/Request;Lorg/apache/catalina/Response;)I+58
    j org.apache.catalina.core.StandardPipeline.doInvoke(Lorg/apache/catalina/Request;Lorg/apache/catalina/Response;)V+77
    j org.apache.catalina.core.StandardPipeline.invoke(Lorg/apache/catalina/Request;Lorg/apache/catalina/Response;)V+3
    j org.apache.catalina.core.ContainerBase.invoke(Lorg/apache/catalina/Request;Lorg/apache/catalina/Response;)V+6
    j org.apache.coyote.tomcat5.CoyoteAdapter.service(Lorg/apache/coyote/Request;Lorg/apache/coyote/Response;)V+296
    j com.sun.enterprise.web.connector.grizzly.ProcessorTask.invokeAdapter()V+19
    j com.sun.enterprise.web.connector.grizzly.ProcessorTask.processNonBlocked(Ljava/io/InputStream;Ljava/io/OutputStream;)Z+15
    j com.sun.enterprise.web.connector.grizzly.ProcessorTask.process(Ljava/io/InputStream;Ljava/io/OutputStream;)Z+25
    j com.sun.enterprise.web.connector.grizzly.ReadTask.executeProcessorTask()Z+74
    j com.sun.enterprise.web.connector.grizzly.ReadTask.doTask()V+161
    j com.sun.enterprise.web.connector.grizzly.TaskBase.run()V+1
    j com.sun.enterprise.web.connector.grizzly.WorkerThread.run()V+22
    v ~StubRoutines::call_stub
    --------------- P R O C E S S ---------------
    Java Threads: ( => current thread )
    0x037aec00 JavaThread "AWT-Windows" daemon [_thread_in_native, id=2664]
    0x0376bb10 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=4020]
    0x03a526c0 JavaThread "Thread-25" daemon [_thread_blocked, id=2508]
    0x03a3b8e8 JavaThread "Timer-5" daemon [_thread_blocked, id=2260]
    0x03a51e18 JavaThread "Timer-4" [_thread_blocked, id=2192]
    0x035bae38 JavaThread "ContainerBackgroundProcessor[StandardEngine[com.sun.appserv].StandardHost[server].StandardContext[__JWSappclients]]" daemon [_thread_blocked, id=2548]
    0x035fac10 JavaThread "httpWorkerThread-4848-1" daemon [_thread_blocked, id=3492]
    0x03786530 JavaThread "httpWorkerThread-4848-0" daemon [_thread_blocked, id=1952]
    0x035fa9e8 JavaThread "SelectorThread-4848" [_thread_in_native, id=408]
    0x03576828 JavaThread "httpWorkerThread-8181-1" daemon [_thread_blocked, id=1964]
    0x0356ee10 JavaThread "httpWorkerThread-8181-0" daemon [_thread_blocked, id=3476]
    0x00c29278 JavaThread "SelectorThread-8181" [_thread_in_native, id=3512]
    0x03acb208 JavaThread "httpWorkerThread-8080-1" daemon [_thread_blocked, id=3472]
    =>0x03b26e50 JavaThread "httpWorkerThread-8080-0" daemon [_thread_in_native, id=3884]
    0x03bea780 JavaThread "SelectorThread-8080" [_thread_in_native, id=1500]
    0x03606198 JavaThread "ContainerBackgroundProcessor[StandardEngine[com.sun.appserv]]" daemon [_thread_blocked, id=3788]
    0x03b57620 JavaThread "SingleSignOnExpiration" daemon [_thread_blocked, id=3528]
    0x03b5fb58 JavaThread "ContainerBackgroundProcessor[StandardEngine[com.sun.appserv].StandardHost[server].StandardContext[]]" daemon [_thread_blocked, id=3480]
    0x03c03d58 JavaThread "ContainerBackgroundProcessor[StandardEngine[com.sun.appserv].StandardHost[server].StandardContext[newPalmService]]" daemon [_thread_blocked, id=3524]
    0x03629bf0 JavaThread "ContainerBackgroundProcessor[StandardEngine[com.sun.appserv].StandardHost[server].StandardContext[palmSecure_ws]]" daemon [_thread_blocked, id=3560]
    0x03acbee8 JavaThread "SingleSignOnExpiration" daemon [_thread_blocked, id=2308]
    0x0374f418 JavaThread "ContainerBackgroundProcessor[StandardEngine[com.sun.appserv].StandardHost[__asadmin].StandardContext[]]" daemon [_thread_blocked, id=2708]
    0x03601a88 JavaThread "ContainerBackgroundProcessor[StandardEngine[com.sun.appserv].StandardHost[__asadmin].StandardContext[web1]]" daemon [_thread_blocked, id=2284]
    0x03b4e748 JavaThread "ContainerBackgroundProcessor[StandardEngine[com.sun.appserv].StandardHost[__asadmin].StandardContext[asadmin]]" daemon [_thread_blocked, id=680]
    0x037e4ac8 JavaThread "Timer-3" [_thread_blocked, id=2100]
    0x03a97b08 JavaThread "RMI RenewClean-[192.168.10.19:1464]" daemon [_thread_blocked, id=2080]
    0x037a7f38 JavaThread "RMI TCP Accept-0" daemon [_thread_in_native, id=1580]
    0x03a4a050 JavaThread "RMI TCP Accept-8686" daemon [_thread_in_native, id=1316]
    0x0379ccd0 JavaThread "Thread-15" [_thread_blocked, id=316]
    0x03771d20 JavaThread "Thread-14" [_thread_blocked, id=228]
    0x0376bcf0 JavaThread "Thread-13" [_thread_blocked, id=436]
    0x0373d2a8 JavaThread "RMI LeaseChecker" daemon [_thread_blocked, id=904]
    0x0373aa68 JavaThread "RMI RenewClean-[192.168.10.19:1429,com.sun.enterprise.admin.server.core.channel.LocalRMIClientSocketFactory@ac4d3b]" daemon [_thread_blocked, id=2320]
    0x00c66dd0 JavaThread "Timer-2" daemon [_thread_blocked, id=1512]
    0x038e3350 JavaThread "Timer-1" [_thread_blocked, id=2272]
    0x03a4ac60 JavaThread "Thread-10" [_thread_in_native, id=4052]
    0x03a6fc88 JavaThread "Thread-8" [_thread_in_native, id=1052]
    0x03a43818 JavaThread "Thread-7" [_thread_in_native, id=2600]
    0x03a1e808 JavaThread "Thread-6" [_thread_in_native, id=1648]
    0x03a1ac20 JavaThread "GC Daemon" daemon [_thread_blocked, id=4084]
    0x03a52e18 JavaThread "RMI Reaper" [_thread_blocked, id=144]
    0x03a52c30 JavaThread "Timer-0" daemon [_thread_blocked, id=208]
    0x03a3d730 JavaThread "RMI TCP Accept-0" daemon [_thread_in_native, id=2044]
    0x00c17020 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=3456]
    0x00c15bf0 JavaThread "CompilerThread0" daemon [_thread_blocked, id=4064]
    0x00c14ed8 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=4060]
    0x00c0fd90 JavaThread "Finalizer" daemon [_thread_blocked, id=4044]
    0x00c0e8c0 JavaThread "Reference Handler" daemon [_thread_blocked, id=2436]
    0x0032df88 JavaThread "main" [_thread_blocked, id=1532]
    Other Threads:
    0x00bdc778 VMThread [id=4028]
    0x00c31a20 WatcherThread [id=4068]
    VM state:not at safepoint (normal execution)
    VM Mutex/Monitor currently owned by a thread: None
    Heap
    def new generation total 11712K, used 4051K [0x06a70000, 0x07720000, 0x11510000)
    eden space 10432K, 27% used [0x06a70000, 0x06d435b0, 0x074a0000)
    from space 1280K, 90% used [0x075e0000, 0x077017d8, 0x07720000)
    to space 1280K, 0% used [0x074a0000, 0x074a0000, 0x075e0000)
    tenured generation total 25784K, used 15468K [0x11510000, 0x12e3e000, 0x26a70000)
    the space 25784K, 59% used [0x11510000, 0x1242b290, 0x1242b400, 0x12e3e000)
    compacting perm gen total 26880K, used 26785K [0x26a70000, 0x284b0000, 0x2aa70000)
    the space 26880K, 99% used [0x26a70000, 0x28498618, 0x28498800, 0x284b0000)
    ro space 8192K, 67% used [0x2aa70000, 0x2afcd9f8, 0x2afcda00, 0x2b270000)
    rw space 12288K, 46% used [0x2b270000, 0x2b813808, 0x2b813a00, 0x2be70000)
    Dynamic libraries:
    0x00400000 - 0x00406000      D:\Sun\AppServer\lib\appserv.exe
    0x7c900000 - 0x7c9b0000      C:\WINDOWS\system32\ntdll.dll
    0x7c800000 - 0x7c8f4000      C:\WINDOWS\system32\kernel32.dll
    0x77c10000 - 0x77c68000      C:\WINDOWS\system32\MSVCRT.dll
    0x6d730000 - 0x6d8c7000      C:\Program Files\Java\jdk1.5.0_07\jre\bin\client\jvm.dll
    0x77d40000 - 0x77dd0000      C:\WINDOWS\system32\USER32.dll
    0x77f10000 - 0x77f56000      C:\WINDOWS\system32\GDI32.dll
    0x77dd0000 - 0x77e6b000      C:\WINDOWS\system32\ADVAPI32.dll
    0x77e70000 - 0x77f01000      C:\WINDOWS\system32\RPCRT4.dll
    0x76b40000 - 0x76b6d000      C:\WINDOWS\system32\WINMM.dll
    0x6d2f0000 - 0x6d2f8000      C:\Program Files\Java\jdk1.5.0_07\jre\bin\hpi.dll
    0x76bf0000 - 0x76bfb000      C:\WINDOWS\system32\PSAPI.DLL
    0x00a10000 - 0x00a27000      C:\Program Files\Common Files\Logishrd\LVMVFM\LVPrcInj.dll
    0x6d700000 - 0x6d70c000      C:\Program Files\Java\jdk1.5.0_07\jre\bin\verify.dll
    0x6d370000 - 0x6d38d000      C:\Program Files\Java\jdk1.5.0_07\jre\bin\java.dll
    0x6d720000 - 0x6d72f000      C:\Program Files\Java\jdk1.5.0_07\jre\bin\zip.dll
    0x6d530000 - 0x6d543000      C:\Program Files\Java\jdk1.5.0_07\jre\bin\net.dll
    0x71ab0000 - 0x71ac7000      C:\WINDOWS\system32\WS2_32.dll
    0x71aa0000 - 0x71aa8000      C:\WINDOWS\system32\WS2HELP.dll
    0x71a50000 - 0x71a8f000      C:\WINDOWS\System32\mswsock.dll
    0x76f20000 - 0x76f47000      C:\WINDOWS\system32\DNSAPI.dll
    0x76fb0000 - 0x76fb8000      C:\WINDOWS\System32\winrnr.dll
    0x76f60000 - 0x76f8c000      C:\WINDOWS\system32\WLDAP32.dll
    0x76fc0000 - 0x76fc6000      C:\WINDOWS\system32\rasadhlp.dll
    0x04220000 - 0x04248000      C:\WINDOWS\system32\rsaenh.dll
    0x769c0000 - 0x76a73000      C:\WINDOWS\system32\USERENV.dll
    0x5b860000 - 0x5b8b4000      C:\WINDOWS\system32\netapi32.dll
    0x6d550000 - 0x6d559000      C:\Program Files\Java\jdk1.5.0_07\jre\bin\nio.dll
    0x662b0000 - 0x66308000      C:\WINDOWS\system32\hnetcfg.dll
    0x71a90000 - 0x71a98000      C:\WINDOWS\System32\wshtcpip.dll
    0x6d520000 - 0x6d528000      C:\Program Files\Java\jdk1.5.0_07\jre\bin\management.dll
    0x6d670000 - 0x6d676000      C:\Program Files\Java\jdk1.5.0_07\jre\bin\rmi.dll
    0x6d070000 - 0x6d1d7000      C:\Program Files\Java\jdk1.5.0_07\jre\bin\awt.dll
    0x73000000 - 0x73026000      C:\WINDOWS\system32\WINSPOOL.DRV
    0x76390000 - 0x763ad000      C:\WINDOWS\system32\IMM32.dll
    0x774e0000 - 0x7761c000      C:\WINDOWS\system32\ole32.dll
    0x73760000 - 0x737a9000      C:\WINDOWS\system32\ddraw.dll
    0x73bc0000 - 0x73bc6000      C:\WINDOWS\system32\DCIMAN32.dll
    0x73940000 - 0x73a10000      C:\WINDOWS\system32\D3DIM700.DLL
    0x6d2b0000 - 0x6d2ef000      C:\Program Files\Java\jdk1.5.0_07\jre\bin\fontmanager.dll
    0x7c9c0000 - 0x7d1d4000      C:\WINDOWS\system32\shell32.dll
    0x77f60000 - 0x77fd6000      C:\WINDOWS\system32\SHLWAPI.dll
    0x773d0000 - 0x774d2000      C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\comctl32.dll
    0x5d090000 - 0x5d127000      C:\WINDOWS\system32\comctl32.dll
    0x05290000 - 0x0529a000      C:\WINDOWS\system32\PvsApiJv.dll
    0x052a0000 - 0x052ac000      D:\Java Project\PalmSecure\src\dll\PvFw.dll
    0x052b0000 - 0x052dc000      D:\Java Project\PalmSecure\src\dll\F3BC1ENG.DLL
    0x052e0000 - 0x0531f000      D:\Java Project\PalmSecure\src\dll\F3BC4CAP.DLL
    0x05320000 - 0x05344000      D:\Java Project\PalmSecure\src\dll\F3BC4COM.DLL
    0x73dd0000 - 0x73ece000      C:\WINDOWS\system32\MFC42.DLL
    0x05c50000 - 0x05cf7000      D:\Java Project\PalmSecure\src\dll\F3BC4MAT.DLL
    VM Arguments:
    jvm_args: -client -Xmx512m -XX:NewRatio=2 -Dcom.sun.aas.defaultLogFile=D:/Sun/AppServer/domains/domain1/logs/server.log -Djava.endorsed.dirs=D:/Sun/AppServer/lib/endorsed -Djava.security.policy=D:/Sun/AppServer/domains/domain1/config/server.policy -Djava.security.auth.login.config=D:/Sun/AppServer/domains/domain1/config/login.conf -Dsun.rmi.dgc.server.gcInterval=3600000 -Dsun.rmi.dgc.client.gcInterval=3600000 -Djavax.net.ssl.keyStore=D:/Sun/AppServer/domains/domain1/config/keystore.jks -Djavax.net.ssl.trustStore=D:/Sun/AppServer/domains/domain1/config/cacerts.jks -Djava.ext.dirs=C:/Program Files/Java/jdk1.5.0_07/jre/lib/ext;D:/Sun/AppServer/domains/domain1/lib/ext;D:/Sun/AppServer/javadb/lib -Djdbc.drivers=org.apache.derby.jdbc.ClientDriver -Djavax.management.builder.initial=com.sun.enterprise.admin.server.core.jmx.AppServerMBeanServerBuilder -Dcom.sun.enterprise.config.config_environment_factory_class=com.sun.enterprise.config.serverbeans.AppserverConfigEnvironmentFactory -Dcom.sun.enterprise.taglibs=appserv-jstl.jar,jsf-impl.jar -Dcom.sun.enterprise.taglisteners=jsf-impl.jar -Dcom.sun.aas.classloader.optionalOverrideableChain=appserv-ws.jar,commons-logging.jar,commons-launcher.jar -Dcom.sun.aas.classloader.appserverChainJars=admin-cli.jar,admin-cli-ee.jar,dbschema.jar,j2ee-svc.jar -Dcom.sun.aas.classloader.serverClassPath.ee=%HADB_HOME%/lib/hadbjdbc4.jar,D:/Sun/AppServer/lib/SUNWjdmk/5.1/lib/jdmkrt.jar,%HADB_HOME%/lib/dbstate.jar,%HADB_HOME%/lib/hadbm.jar,%HADB_HOME%/lib/hadbmgt.jar,D:/Sun/AppServer/lib/SUNWmfwk/lib/mfwk_instrum_tk.jar -Dcom.sun.aas.configName=server-config -Ddomain.name=domain1 -Djmx.invoke.getters=true -Dcom.sun.aas.promptForIdentity=true -Dcom.sun.aas.classloader.optionalOverrideableChain.ee= -Dcom.sun.aas.instanceRoot=D:/Sun/AppServer/domains/domain1 -Dcom.sun.aas.domainName=domain1 -Dcom.sun.aas.classloader.sharedChainJars=javaee.jar,C:/Program Files/Java/jdk1.5.0_07/lib/tools.jar,install/applications/jmsra/imqjmsra.jar,commons-launcher.jar
    java_command: <unknown>
    Launcher Type: generic
    Environment Variables:
    JAVA_HOME=C:\Program Files\Java\jdk1.5.0_07
    CLASSPATH=C:\PROGRA~1\JMF21~1.1E\lib\sound.jar;C:\PROGRA~1\JMF21~1.1E\lib\jmf.jar;C:\PROGRA~1\JMF21~1.1E\lib;C:\Program Files\Java\jdk1.5.0_07\jre\lib;.
    PATH=C:/Program Files/Java/jdk1.5.0_07\jre\bin\client;D:\Sun\AppServer\lib;D:\Sun\AppServer\lib;C:\Program Files\Java\jdk1.5.0_07\bin;.;C:\WINDOWS\system32;C:\WINDOWS;D:\Sun\AppServer\lib;D:\Sun\AppServer\bin;D:\Sun\AppServer\lib;D:\Sun\AppServer\bin;C:\Sun\share\lib;C:\Sun\share\bin;C:\PROGRA~1\Java\JDK15~2.0_0\bin;C:\Sun\MessageQueue\lib;C:\Sun\MessageQueue\bin;c:\oracledb\product\10.2.0\db_2\bin;D:\oracle\product\10.2.0\db_1\bin;c:\oracle\ora92\bin;C:\Program Files\Oracle\jre\1.3.1\bin;C:\Program Files\Oracle\jre\1.1.8\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\wamp\php;C:\wamp\Apache\GnuWin32\bin;d:\Program Files\Microsoft SQL Server\90\Tools\binn\;D:\Java Project\PalmSecure\src\dll;D:\Java Project\PalmSecure\src\Lib;.;D:\Sun\AppServer\bin;;C:\Sun\AppServer;C:\Program Files\Java\jdk1.5.0_07\bin;C:\Program Files\Cvsnt;C:\Program Files\CVSNT\;D:\Java Project\PalmSecure\src\dll;D:\Java Project\PalmSecure\src\Lib;
    USERNAME=subbu.chandrasekaran
    OS=Windows_NT
    PROCESSOR_IDENTIFIER=x86 Family 15 Model 44 Stepping 2, AuthenticAMD
    --------------- S Y S T E M ---------------
    OS: Windows XP Build 2600 Service Pack 2
    CPU:total 1 family 47, cmov, cx8, fxsr, mmx, sse, sse2
    Memory: 4k page, physical 457904k(42684k free), swap 3464136k(2905608k free)
    vm_info: Java HotSpot(TM) Client VM (1.5.0_07-b03) for windows-x86, built on May 3 2006 01:04:38 by "java_re" with MS VC++ 6.0
    what is the reason for this one....?
    In my case, whenever the user has clicked the Identify button then the native method Identify should be called. That time it's working fine.
    But once the user has clicked the Enroll button, then first the Identify native method should be called, based upon the result, the enroll() native method will be called. I am getting the error whenever i am clicking the Enroll button.
    while clicking the Identify button i didn't get any such error....
    What would be the reason?
    someone pls clear my doubt.
    --Subbu                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         

    You have a bug in your C code, and are attempting to access memory location 0.
    Look for an unitialized pointer.

  • Accessing a native method from within a packaged class

    I have seen some very useful information from RPaul. However, I can not quite get it to work.
    I have a class "JNIGetUserId" that is in a package "com.services.localoptions". I am trying to call a native method from a dll. it works fine at the default package level. But not in the package. I have tried adding the "_" between each level of the directory in the h and c++ files. I also found that doing a javah at the top of the package structure it includes some information in the h file. A "_0005" shows up between each level.
    This is on Windows XP. I am also using VisualAge for Java. I also am using JDK 1.3.1.
    The source files:
    package com.services.localoptions;
    * This class provides the JNI Interface to call the
    * AD User Maintainence routines.
    * These routines are stored in the JNIGetUserIdLibrary.dll.
    * The routines are:
    * <ul>
    * <li>getUser - returns a string containing the User Id
    * <eul>
    * @author: Ray Rowehl
    * @date (10/15/2003 10:30:59 AM)
    public class JNIGetUserId
         // Load the library
         static
         try
              System.out.println("loading dll");
         System.loadLibrary("JNIGetUserIdLibrary");
         System.out.println("loaded dll");
         catch (UnsatisfiedLinkError ue)
              System.out.println("Link Error");
    * native C++ method to call getUserId routine
    public native String getUser() throws Exception;
    * This method allows us to test standalone..
    * Creation date: (10/16/2003 2:08:58 PM)
    * @param args java.lang.String[]
    public static void main(String[] args)
         try
              System.out.println("Trying method 3");
              JNIGetUserId lGUD = new JNIGetUserId();
              System.out.println(lGUD.getUser());
         catch (Exception e)
              System.out.println("Got an exception " + e);
              e.printStackTrace();
    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include <jni.h>
    /* Header for class JNIGetUserId */
    #ifndef IncludedJNIGetUserId
    #define IncludedJNIGetUserId
    #ifdef __cplusplus
    extern "C" {
    #endif
    * Class: JNIGetUserId
    * Method: getUser
    * Signature: ()Ljava/lang/String;
    JNIEXPORT jstring JNICALL Java_com_localoptions_JNIGetUserId_getUser
    (JNIEnv *, jobject);
    #ifdef __cplusplus
    #endif
    #endif
    // Implements method to return a string to Java
    // C++ core header
    #include <iostream.h>
    // header from Java Interface
    #include "JNIGetUserId.h"
    #include "JNIGetUserId2.h"
    // returns a string back to Java for package structure
    JNIEXPORT jstring JNICALL Java_com_services_localoptions_JNIGetUserId_getUser
    ( JNIEnv * env, jobject thisObject )
         // set up constant user id for testing return
         char* userid = "RROWEHLP";
         // return userid to caller
         return env->NewStringUTF( userid );     
    // returns a string back to Java for flat structure
    JNIEXPORT jstring JNICALL Java_JNIGetUserId_getUser
    ( JNIEnv * env1, jobject thisObject1 )
         // set up constant user id for testing return
         char* userid1 = "RROWEHL1";
         // return userid to caller
         return env1->NewStringUTF( userid1 );     
    }

    Ok. A co-worker figured it out for me. The key thing is to do "javah com.services.localoptions.JNIGetUserId". Note the use of "." instead of "\". Running on windows, I was used to doing "\". That was part of the problem. Another key is doing the javah at the top of the package structure. This was mentioned in a post over at IBM.
    We got our JNI stuff working now. thanks, ray.

  • Unable to call a native method

    Hi All,
    I am trying to call a native method tapi3Init from tapi3.dll present in Windows\System32 folder. But I get an error as below.
    Exception in thread "Main Thread" java.lang.UnsatisfiedLinkError: DLLCall.tapi3Init
         at DLLCall.main(DLLCall.java:25)
    I have verified my java.library.path and it has the path in it. I have cross verified by typing a wrong dll name and that gave a relevant error. So, please let me know what is going wrong?
    Also, is it not possible to call a native method from a dll which is not formed by using the javah header file?
    Thanks.

    native method tapi3Init from tapi3.dllSo that would be your JNI method.
    Exception in thread "Main Thread" java.lang.UnsatisfiedLinkError: DLLCall.tapi3Init And you are not calling it. Standard reasons apply.
    - library not loaded
    - Signatures are different.

  • Java code to invoke a native library in a Resource Adapter

    Have any of you done the project on invoking a native library in a Resource Adapter that you could share some experience/tips? Thanks

    Hi Frances,
    I haven't yet done anything in this area, but I should be rather staright forward in following the related manuals:
    Configuring the Use of Resource Adapter Native Libraries
    http://download-uk.oracle.com/docs/cd/B31017_01/web.1013/b28956/adminra.htm#CACJAJHC
    The oc4j-connectors.xml File <security-permission> Element
    http://download-uk.oracle.com/docs/cd/B31017_01/web.1013/b28957/jcacontinued.htm#CHDHFEDA
    BTW: as far as I can see (haven't read the whole manual) the most important point isn't addressed in this manual: to make the native code available in your Java code, you have to load the native library with a code line like:
    System.loadLibrary("....");
    or
    Runtime.getRuntime().loadLibrary("...");
    This code line is a very critical one, because you can call it only ONCE for a native library during the runtime of a JVM.
    From the Runtime.loadLibrary JavaDoc:
    If this method is called more than once with the same library name, the second and subsequent calls are ignored.
    This statement is also true for calls in different ClassLoaders!
    Best,
    Manfred

  • JNI Calls to Native Methods No Longer Work: Possible Versioning Issue ?

    Hello, all. Just a quick question... is it possible that invoking a method in a JNI-compliant DLL from Java 6 will fail if the DLL's source was compiled against the JNI header files from Java 4 or 5 ? I have a DLL with methods that used to be called successfully (and now fail outright and don't even seem to be getting inside the native method), but it seems that the only thing that could have changed in the environment is the installed JRE. Even stranger, I don't get the hs_err* files anymore to indicate that the JVM crashed. Does anyone know why this might happen ? Thanks !

    Cthulhu76 wrote:
    Hello, all. Just a quick question... is it possible that invoking a method in a JNI-compliant DLL from Java 6 will fail if the DLL's source was compiled against the JNI header files from Java 4 or 5 ? Solely? No.
    You could of course be doing something in the JNI code in terms of working with Java which no longer works. Just as it is at least possible that java code from one version might not work with another.
    Correct error checking in the JNI code would at least correctly identify this problem however.
    I have a DLL with methods that used to be called successfully (and now fail outright and don't even seem to be getting inside the native method), but it seems that the only thing that could have changed in the environment is the installed JRE.The only thing that you assume changed was the JRE.
    You seem unsure whether the JNI is being called at all, so verifying that first would be a good idea.

  • Calling multiple DLL from Java and calling same native method

    i have two dll files named DLL_1.dll and DLL_2.dll .
    Both of them contain a native method which has a signature
    JNIEXPORT void JNICALL Java_Database_Notify
    (JNIEnv *, jclass);
    This method is common to both the DLL
    Now i load both of the DLL's using,
    System.loadLibrary("DLL_1");
    System.loadLibrary("DLL_2");
    Both of the DLL are loaded form same Java Application
    But the problem is that , whenever i try to call the Notify Method , it calls the Notify method of DLL_1 only.
    How do i call the Notify Methos of second DLL(i.e DLL_2).
    Is there any reference that i can get to all the DLL files when i load then , so that i can use that reference to invoke the Notify method of that particular DLL.

    i have two dll files named DLL_1.dll and DLL_2.dll .
    Both of them contain a native method which has a
    signature
    JNIEXPORT void JNICALL Java_Database_Notify
    (JNIEnv *, jclass);
    This method is common to both the DLL
    Now i load both of the DLL's using,
    System.loadLibrary("DLL_1");
    System.loadLibrary("DLL_2");
    Both of the DLL are loaded form same Java
    Application
    But the problem is that , whenever i try to call the
    Notify Method , it calls the Notify method of DLL_1
    only.
    How do i call the Notify Methos of second DLL(i.e
    DLL_2).
    Is there any reference that i can get to all the DLL
    files when i load then , so that i can use that
    reference to invoke the Notify method of that
    particular DLL.You need to explain exactly what you are trying to achieve.
    As per the description above it is impossible in java.
    And I didn't say JNI, I said java.
    Your above statement suggests that you think that you can have exactly the same java signature do two different things.
    Note again that I said java not JNI.
    A JNI method is just a tag that represents a java signature. Your description suggests that you are attempting to do it twice.
    There are three possibilities.
    1. Your explanation is incomplete.
    2. You are trying to do something that is impossible in java.
    3. You are trying to solve a problem and your description of your solution is not sufficient to determine what that is (and of course the solution is wrong.)

  • Call native methods from windows dll

    Hello all,
    I want to call BlockInput method from User32.dll. My source code looks something like this:
    public class User32Dll_1 {
         static {
              try {
                   System.loadLibrary("User32");
              catch (Exception ex)
                   ex.printStackTrace();
         public static void main(String[] args) throws UnsatisfiedLinkError {
              BlockInput (true);
         /** @param b
         * @dll.import("USER32")*/
         private static native boolean BlockInput(boolean bBOOL);
    And the problem is that I get the following exception:
    java.lang.UnsatisfiedLinkError: BlockInput
         at User32Dll_1.BlockInput(Native Method)
         at User32Dll_1.main(User32Dll_1.java:27)
    Exception in thread "main"
    Can someone provide me a solution for this?
    Thank you in advance!

    can't do
    use JACOB
    http://danadler.com/jacob/
    or
    http://www.ezjcom.com/

  • Invoke jar main method in java code

    hi
    i have a jar that has a usage like this
    java -jar helper.jar arg1 arg2 etc...i want to invoke this helper main method in my java code.i've tried using reflection but it didn't quite work...
    String[] args = new String[]{"arg1","arg2"};
    Class c = Class.forName("com.helper.MainClass");
    Method mainMethod = c.getMethod("main", args.getClass());
    int mods = mainMethod.getModifiers();
    if(mainMethod.getReturnType() != void.class || !Modifier.isStatic(mods) || !Modifier.isPublic(mods)) {
         throw new NoSuchMethodException("main");
    mainMethod.invoke(null, args);
    Exception in thread "main" java.lang.IllegalArgumentException: argument type mismatch
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at Test.callJarMain(Test.java:50)
    at Test2.main(Test.java:34)thoughts???

    phychem wrote:
    i want to use this jar in a non-static way.
    public void useJar(String args[]){
    //somehow invoke jar method here...
    Sorry, I still don't get it. I don't know what you mean by a non-static way of using jars. The main method for launching an application is static so if you call that method, you will be using a static method. I don't know what you mean by a "jar method" either. Methods are inside classes. So far, all I can guess is you want to invoke a method in a class that happens to be inside a jar. Since people do this all the time without reflection, I don't see the problem.

  • Java application hangs during running java native method

    Hello,
    There is compiled java application.
    It hangs at very begginings.
    It was detected that in the beggining a new Frame should be created. Then one java library invokes native method. During invoking of the native method application hangs.
    Stack is available only until native method invocation.
    Thread 25196 "main": (state = IN_NATIVE)
    at sun.awt.X11GraphicsDevice.getDoubleBufferVisuals(Native Method)
    at sun.awt.X11GraphicsDevice.getDefaultConfiguration(X11GraphicsDevice.java:181)
    at java.awt.Window.init(Window.java:271)
    at java.awt.Window.<init>(Window.java:319)
    at java.awt.Frame.<init>(Frame.java:419)
    at javax.swing.JFrame.<init>(JFrame.java:194)
    at com.test.ORBManager.Splash.<init>(Splash.java:10)
    at com.test.ORBManager.Splash.main(Splash.java:48)
    Method getDoubleBufferVisuals(int screen) is used to enumerates all visuals that support double buffering (according to comments in the source code).
    Tried to run with "-verbose" options...
    I tried to use jconsole &#1080; jvisualvm. But did not find anything special.
    Also "strace" command showed some results but do not know how to proceed:
    select(6, [5], [5], NULL, NULL) = 1 (out [5])
    writev(5, [{"b\0\6\0\r\0\0\0DOUBLE-BUFFER\0\0\0", 24}], 1) = 24
    select(6, [5], [], NULL, NULL) = 1 (in [5])
    read(5, "\1\0\t\0\0\0\0\0\1\211\0\204\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096) = 32
    read(5, 0x83b57bc, 4096) = -1 EAGAIN (Resource temporarily unavailable)
    gettimeofday({1275494877, 569746}, NULL) = 0
    select(6, [5], [5], NULL, NULL) = 1 (out [5])
    writev(5, [{"b\0\6\0\r\0\0\0DOUBLE-BUFFER\0\0\0", 24}], 1) = 24
    select(6, [5], [], NULL, NULL) = 1 (in [5])
    read(5, "\1\0\n\0\0\0\0\0\1\211\0\204\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 4096) = 32
    read(5, 0x83b57bc, 4096) = -1 EAGAIN (Resource temporarily unavailable)
    select(6, [5], [5], NULL, NULL) = 1 (out [5])
    writev(5, [{"\211\6\3\0\1\0\0\0&\0\0\0", 12}], 1) = 12
    select(6, [5], [], NULL, NULL) = 1 (in [5])
    read(5, "\1\0\v\0\f\0\0\0\1\0\0\0\377\32\0\0\377\r\307 \0\0\0\0\0\23\372\300\376\3346\34"..., 4096) = 44
    read(5, 0x83c31e4, 36) = -1 EAGAIN (Resource temporarily unavailable)
    select(6, [5], NULL, NULL, NULL) = ? ERESTARTNOHAND (To be restarted)
    I have downloaded from the internet the source code of native method but do not know what I can do with it.
    Is it possible to debug native method somehow?
    How to detect where the library contans the native method is located?
    What other ways can provide more information about reason.
    It seems that the problem is related to graphics. Judging by class name "X11GraphicsDevice" it is related to X server. May be some server settings?
    The problem is present on SLED 11 machines.
    It is not reproduced on SLED 10.
    I will be really appreciate for any help.
    Thanks in advance.
    Vasily.

    Hi,
    Thanks for tip. I used jstack. It gives a little bit more info but I have to few knoledges how to treat the info.
    ----------------- 24231 -----------------
    ----------------- 24317 -----------------
    0xffffe430     ????????
    0x6dd12229     ????????
    0xb0ca5898     * java.net.PlainSocketImpl.socketAccept(java.net.SocketImpl) bci:0 (Interpreted frame)
    0xb0c9fb6b     * java.net.PlainSocketImpl.accept(java.net.SocketImpl) bci:7 line:384 (Interpreted frame)
    0xb0c9fb6b     * java.net.ServerSocket.implAccept(java.net.Socket) bci:50 line:450 (Interpreted frame)
    0xb0c9fb6b     * java.net.ServerSocket.accept() bci:48 line:421 (Interpreted frame)
    0xb0c9fa94     * sun.rmi.transport.tcp.TCPTransport.run() bci:59 line:340 (Interpreted frame)
    0xb0c9fe71     * java.lang.Thread.run() bci:11 line:595 (Interpreted frame)
    0xb0c9d236     <StubRoutines>
    0xb6f38eac     _ZN9JavaCalls11call_helperEP9JavaValueP12methodHandleP17JavaCallArgumentsP6Thread + 0x1bc
    0xb7108aa8     _ZN2os20os_exception_wrapperEPFvP9JavaValueP12methodHandleP17JavaCallArgumentsP6ThreadES1_S3_S5_S7_ + 0x18
    0xb6f38705     _ZN9JavaCalls12call_virtualEP9JavaValue11KlassHandle12symbolHandleS3_P17JavaCallArgumentsP6Thread + 0xd5
    0xb6f3879e     _ZN9JavaCalls12call_virtualEP9JavaValue6Handle11KlassHandle12symbolHandleS4_P6Thread + 0x5e
    0xb6fb0765     _Z12thread_entryP10JavaThreadP6Thread + 0xb5
    0xb71a9373     _ZN10JavaThread3runEv + 0x133
    0xb71096b8     _Z6_startP6Thread + 0x178
    0xb781a1b5     start_thread + 0xc5
    ----------------- 24318 -----------------
    0xffffe430     ????????
    0x1b7bfaf0     ????????
    ----------------- 24373 -----------------
    0xffffe430     ????????
    0xb71087be     _ZN2os5Linux14safe_cond_waitEP14pthread_cond_tP15pthread_mutex_t + 0xae
    0xb70fe2af     _ZN13ObjectMonitor4waitExiP6Thread + 0xa6f
    0xb718bdc6     _ZN18ObjectSynchronizer4waitE6HandlexP6Thread + 0x56
    0xb6f925e3     JVM_MonitorWait + 0x163
    0xb0ca5898     * java.lang.Object.wait(long) bci:0 (Interpreted frame)
    0xb0c9fb6b     * java.lang.ref.ReferenceQueue.remove(long) bci:44 line:120 (Interpreted frame)
    0xb0c9fa94     * java.lang.ref.ReferenceQueue.remove() bci:2 line:136 (Interpreted frame)
    0xb0c9fa94     * sun.java2d.Disposer.run() bci:3 line:125 (Interpreted frame)
    0xb0c9fe71     * java.lang.Thread.run() bci:11 line:595 (Interpreted frame)
    0xb0c9d236     <StubRoutines>
    0xb6f38eac     _ZN9JavaCalls11call_helperEP9JavaValueP12methodHandleP17JavaCallArgumentsP6Thread + 0x1bc
    0xb7108aa8     _ZN2os20os_exception_wrapperEPFvP9JavaValueP12methodHandleP17JavaCallArgumentsP6ThreadES1_S3_S5_S7_ + 0x18
    0xb6f38705     _ZN9JavaCalls12call_virtualEP9JavaValue11KlassHandle12symbolHandleS3_P17JavaCallArgumentsP6Thread + 0xd5
    0xb6f3879e     _ZN9JavaCalls12call_virtualEP9JavaValue6Handle11KlassHandle12symbolHandleS4_P6Thread + 0x5e
    0xb6fb0765     _Z12thread_entryP10JavaThreadP6Thread + 0xb5
    0xb71a9373     _ZN10JavaThread3runEv + 0x133
    0xb71096b8     _Z6_startP6Thread + 0x178
    0xb781a1b5     start_thread + 0xc5
    ----------------- 24227 -----------------
    0xffffe430     ????????
    0x6cbc4021     ????????
    0x6cbc232a     ????????
    0x6cbc3c9a     ????????
    0x6cc1d5d1     ????????
    0x6d41013f     ????????
    0x6d460f19     ????????
    0xb0ca5898     * sun.awt.X11GraphicsDevice.getDoubleBufferVisuals(int) bci:0 (Interpreted frame)
    0xb0c9fb6b     * sun.awt.X11GraphicsDevice.getDefaultConfiguration() bci:140 line:181 (Interpreted frame)
    0xb0c9fa94     * java.awt.Window.init(java.awt.GraphicsConfiguration) bci:51 line:271 (Interpreted frame)
    0xb0c9fb6b     * java.awt.Window.<init>() bci:66 line:319 (Interpreted frame)
    0xb0c9fb6b     * java.awt.Frame.<init>(java.lang.String) bci:1 line:419 (Interpreted frame)
    0xb0c9fb6b     * javax.swing.JFrame.<init>(java.lang.String) bci:2 line:194 (Interpreted frame)
    0xb0c9fb6b     * com.test.ORBManager.Splash.<init>() bci:3 line:10 (Interpreted frame)
    0xb0c9fb6b     * com.test.ORBManager.Splash.<init>(java.lang.String[]) bci:4 line:48 (Interpreted frame)
    0xb0c9d236     <StubRoutines>
    0xb6f38eac     _ZN9JavaCalls11call_helperEP9JavaValueP12methodHandleP17JavaCallArgumentsP6Thread + 0x1bc
    0xb7108aa8     _ZN2os20os_exception_wrapperEPFvP9JavaValueP12methodHandleP17JavaCallArgumentsP6ThreadES1_S3_S5_S7_ + 0x18
    0xb6f38cdf     _ZN9JavaCalls4callEP9JavaValue12methodHandleP17JavaCallArgumentsP6Thread + 0x2f
    0xb6f638b2     _Z17jni_invoke_staticP7JNIEnv_P9JavaValueP8_jobject11JNICallTypeP10_jmethodIDP18JNI_ArgumentPusherP6Thread + 0x152
    0xb6f54ac2     jni_CallStaticVoidMethod + 0x122
    0x08049873     ????????
    0xb76c9705     ????????The last stack also has "sun.awt.X11GraphicsDevice.getDoubleBufferVisuals(int) bci:0 (Interpreted frame)" but what tode next?
    Also I found that the native code is in java 1.5 source code: \j2se\src\solaris\native\sun\awt\awt_GraphicsEnv.c.
    How it is possible to compile it?

  • How to Provide Native Methods in an Executable?

    Hey there,
    I'm writing a native Java launcher as a replacement for java.exe (or eclipse.exe). So far I'm only on Windows NT x64. Things work pretty well: My native executable launches the JVM using the Invocation API and calls a static `main' method.
    Now I thought it was a good idea if my executable could provide the implementations of a few native methods so the `jvm.dll' can communicate with the executable that it was loaded by. This would free me from having to locate and load a shared library at runtime. I expected this to "just work," but alas, it didn't. Providing a simple native method such as
    JNIEXPORT jboolean JNICALL
    Java_com_phrood_kourou_Kourou_available0(JNIEnv* env, jclass cls) {
    return JNI_TRUE;
    in the executable and calling it from Java through JNI, I get an `UnsatisfiedLinkError'. Why is that so? Both the executable and the DLL live in the same process, so shouldn't the C function be found without further concern?
    Then I came up with the somewhat experimental idea and just loaded the EXE file from Java by `System.load(pathToExe)'. I never expected this to work, but---it did!
    That's good news, of course. Only I'm afraid that's a lot more memory-consuming than it needs to be. My EXE file has some 200 KB and counting, and I only need I a handful of small native-method implementations. I could write a DLL, of course, but I'd like to do without an extra file and an extra project to set up and maintain.
    So, my question is: Why do I have to load the EXE into the same process a second time? Is there a more elegant solution?
    Regards,
    -- Phil

    It doesn't work anyway. Although I can load my EXE as a DLL, the newly-loaded image has its own address space, so I cannot use that to call back the EXE.
    I think I can acomplish what I need without a DLL altogether. Hopefully.
    I want the usage of my executable to be as simple as using `java.exe'. Clients should just write a configuration file, rename and start or double-click the EXE and that's it. An MSI would be pointless here, since the usage of the launcher is completely generic.
    More importantly, maintaining cross-platforms C++ projects with Eclipse CDT is possible but a bit of a hassle. I already have two projects: one for the EXE and one for the Java companion Jar. Creating a new DLL project would require me to maintain 3 Eclipse build configurations for Windows, Linux, and Mac; and even another three should I support the x86 architecture. I'd be happy if I could do without.
    What strikes me is that you folks try to teach me what I should do or not do, even call my problem a "nonproblem," rather than just help me out and try to answer my questions. None of the answers here were helpful to me, but I think I figured it out.
    Nonetheless, thanks for taking the time to read and answer.

Maybe you are looking for

  • If my iPad is lost, how do I know when it has been removed from my Apple ID account?

    I lost my son's iPad this afternoon. By the time I realized I couldn't find it and pulled out my phone to use the Find Phone My iPhone app, it may have been too late to set it up as lost. The iPad is still displaying in the app, but simply as offline

  • Airport express no longer being recognized

    I previously had my home network set up and working with no problems. I have an airport base station and I have an airport express that I use to print wirelessly. After one of the recent updates, my airport express was no longer recognized by the air

  • HT1051 no 'edit shipping' button in iPhoto '11

    I'm using iPhoto '11. I'm normally UK based but currently in the US and I want to ship photos to a US address and pay with a US card. In the shipping information 'United Kingdom' is fixed and can't be changed. There is no 'edit shipping' button as st

  • 1811W router unable to get DHCP IP from Speedstream 4100

    I have a Yahoo-ATT DSL installation with 1 dynamic IP address. It uses an ISP supplied speedstream 4100 DSL modem. The 4100 appears to take care of all the PPOE duties and DHCP connections from PCs or low-end routers (I'm temporarily using a NetGear

  • Why has a Human Task only 1 UI?

    A little more abstract / philosophical discussion. I'm not really comfortable with the rigid "1 Human Task (HT) corresponds to 1 screen (UI)", although it will be all right for 90% of the time. Could be that the BPMN spec itself is to blame for this.