Loading 64bits librairies for JNI calls

Hi
somebody knows if its possible to load 64 bits librairies with LoadLibrary call ???
I'am trying on HPUX 11.11 64 with Java 1.3.1 and its impossible.
I have read on
http://www.hp.com/products1/unix/java/infolibrary/prog_guide/java1_3/JNI_java2.html
that i'ts impossible to load 64b librairies, only 32
Is it true for all OS (Solaris etc ) ??
Is it true for all Java version (1.3, 1.4) ??
Do i need to try with 64b JVM ??
Jean de Ratuld

It's the same with System.load !!!!
I've made a trace of system call's with a "truss" like command.
the library is correctly founded and loaded but the JVM
throw an Exception.
I've red on this web page:
http://www.hp.com/products1/unix/java/infolibrary/prog_guide/java1_3/JNI_java2.html
that
"The Java Native Interface, typically referred to as JNI, is a standard native method interface that allows Java to call up native libraries written in other languages. (Java is a 32-bit language, so you can't use 64-bit libraries with JNI.) "
I think it's not possible to load 64b libraries !!
thanks for your help
Jean de Ratuld

Similar Messages

  • Wildcards in Classpath for JNI-Calls

    Is it possible to use wildcards in the classpath for KNI-Calls?
    I would like to use wildcard for jni-calls like for normal java-calls (java -classpath *.jar ...), but it is not working.
    JDK version is JDK 1.5.0 on Win32

    I would like to use wildcard for jni-calls like for normal
    java-calls (java -classpath *.jar ...), but it is not working.It would be the Shell, not Java doing the wildcard magic.
    You would have to do the globbing manually (or use any OS APIs, or 3rd party APIs).

  • Classpath for JNI call in NT4?

    ?I prepare MyClass for JNI call on iPlanet 6 running on NT. The corresponding DLL is put in WINNT\SYSTEM32. The classpath set in registry is updated too. But error "class not found. (no MyClass in java.library.path)" still occurs. Is there any work i miss? Please advise.?

    Hi,
    Can you check the Environment variable CLASSPATH ?, the application server's classpath found under Software/iPlanet->Application Server->6.0->Java using kregedit.
    Thanks & Regards
    Ganesh .R
    Developer Technical Support
    Sun Microsystems
    http://www.sun.com/developers/support

  • 11.5.10.2 to R12.1.1 upgrade: Error loading seed data for GL_DEFAS_ACCESS_SETS:  DEFINITION_ACCESS_SET = SUPER_USER_DEFAS,  ORA-06508: PL/SQL: could not find program unit being called

    Hello,
    EBS version : 11.5.10.2
    DB version : 11.2.0.3
    OS version : AIX 6.1
    As a part of 11.5.10.2 to R12.1.1 upgrade, while applying merged 12.1.1 upgrade driver(u6678700.drv), we got below error :
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ATTENTION: All workers either have failed or are waiting:
               FAILED: file glsupdas.ldt on worker  3.
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    drix10:/fmstop/r12apps/apps/apps_st/appl/admin/FMSTEST/log>tail -20 adwork003.log
    Restarting job that failed and was fixed.
    Time when worker restarted job: Wed Aug 07 2013 10:36:14
    Loading data using  FNDLOAD function.
    FNDLOAD APPS/***** 0 Y UPLOAD @SQLGL:patch/115/import/glnlsdas.lct @SQLGL:patch/115/import/US/glsupdas.ldt -
    Connecting to APPS......Connected successfully.
    Calling FNDLOAD function.
    Returned from FNDLOAD function.
    Log file: /fmstop/r12apps/apps/apps_st/appl/admin/FMSTEST/log/US_glsupdas_ldt.log
    Error calling FNDLOAD function.
    Time when worker failed: Wed Aug 07 2013 10:36:14
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    drix10:/fmstop/r12apps/apps/apps_st/appl/admin/FMSTEST/log>tail -20 US_glsupdas_ldt.log
    Current system time is Wed Aug  7 10:36:14 2013
    Uploading from the data file /fmstop/r12apps/apps/apps_st/appl/gl/12.0.0/patch/115/import/US/glsupdas.ldt
    Altering database NLS_LANGUAGE environment to AMERICAN
    Dumping from LCT/LDT files (/fmstop/r12apps/apps/apps_st/appl/gl/12.0.0/patch/115/import/glnlsdas.lct(120.0), /fmstop/r12apps/apps/apps_st/appl/gl/12.0.0/patch/115/import/US/glsupdas.ldt) to staging tables
    Dumping LCT file /fmstop/r12apps/apps/apps_st/appl/gl/12.0.0/patch/115/import/glnlsdas.lct(120.0) into FND_SEED_STAGE_CONFIG
    Dumping LDT file /fmstop/r12apps/apps/apps_st/appl/gl/12.0.0/patch/115/import/US/glsupdas.ldt into FND_SEED_STAGE_ENTITY
    Dumped the batch (GL_DEFAS_ACCESS_SETS SUPER_USER_DEFAS , GL_DEFAS_ACCESS_SETS SUPER_USER_DEFAS ) into FND_SEED_STAGE_ENTITY
    Uploading from staging tables
      Error loading seed data for GL_DEFAS_ACCESS_SETS:  DEFINITION_ACCESS_SET = SUPER_USER_DEFAS,  ORA-06508: PL/SQL: could not find program unit being called
    Concurrent request completed
    Current system time is Wed Aug  7 10:36:14 2013
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    Below is info about file versions and INVALID packages related to GL.
    PACKAGE BODY GL_DEFAS_ACCESS_SETS_PKG is invalid with error component 'GL_DEFAS_DBNAME_S' must be declared.
    I can see GL_DEFAS_DBNAME_S is a VALID sequence accessible by apps user with or without specifying GL as owner.
    SQL> select text from dba_source where name in ('GL_DEFAS_ACCESS_DETAILS_PKG','GL_DEFAS_ACCESS_SETS_PKG') and line=2;
     TEXT
    /* $Header: glistdds.pls 120.4 2005/05/05 01:23:16 kvora ship $ */
    /* $Header: glistddb.pls 120.16 2006/04/10 21:28:48 cma ship $ */
    /* $Header: glistdas.pls 120.4 2005/05/05 01:23:02 kvora ship $ */
    /* $Header: glistdab.pls 120.5 2006/03/13 19:56:21 cma ship $ */ 
    SQL> select * from all_objects where object_name in ('GL_DEFAS_ACCESS_DETAILS_PKG','GL_DEFAS_ACCESS_SETS_PKG')
      2 ; OWNER OBJECT_NAME SUBOBJECT_NAM OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE CREATED LAST_DDL_TIME TIMESTAMP STATUS T G S NAMESPACE
    EDITION_NAME
    APPS GL_DEFAS_ACCESS_DETAILS_PKG 1118545 PACKAGE 05-AUG-13 05-AUG-13 2013-08-05:18:54:51 VALID N N N 1 
    APPS GL_DEFAS_ACCESS_SETS_PKG 1118548 PACKAGE 05-AUG-13 06-AUG-13 2013-08-05:18:54:51 VALID N N N 1 
    APPS GL_DEFAS_ACCESS_SETS_PKG 1128507 PACKAGE BODY 05-AUG-13 06-AUG-13 2013-08-06:12:56:50 INVALID N N N 2 
    APPS GL_DEFAS_ACCESS_DETAILS_PKG 1128508 PACKAGE BODY 05-AUG-13 05-AUG-13 2013-08-05:19:43:51 VALID N N N 2 
    SQL> select * from all_objects where object_name='GL_DEFAS_DBNAME_S'; OWNER OBJECT_NAME SUBOBJECT_NAM OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE CREATED LAST_DDL_TIME TIMESTAMP STATUS T G S NAMESPACE
    EDITION_NAME
    GL GL_DEFAS_DBNAME_S 1087285 SEQUENCE 05-AUG-13 05-AUG-13 2013-08-05:17:34:43 VALIDN N N 1 
    APPS GL_DEFAS_DBNAME_S 1087299 SYNONYM 05-AUG-13 05-AUG-13 2013-08-05:17:34:43 VALIDN N N 1 
    SQL> conn apps/apps
    Connected.
    SQL> SELECT OWNER, OBJECT_NAME, OBJECT_TYPE, STATUS
    FROM DBA_OBJECTS
    WHERE OBJECT_NAME = 'GL_DEFAS_ACCESS_SETS_PKG'; 2 3 OWNER OBJECT_NAME OBJECT_TYPE STATUS
    APPS GL_DEFAS_ACCESS_SETS_PKG PACKAGE VALID
    APPS GL_DEFAS_ACCESS_SETS_PKG PACKAGE BODY INVALID SQL> ALTER PACKAGE GL_DEFAS_ACCESS_SETS_PKG COMPILE; Warning: Package altered with compilation errors. SQL> show error
    No errors.
    SQL> ALTER PACKAGE GL_DEFAS_ACCESS_SETS_PKG COMPILE BODY; Warning: Package Body altered with compilation errors. SQL> show error
    Errors for PACKAGE BODY GL_DEFAS_ACCESS_SETS_PKG: LINE/COL ERROR
    39/17 PLS-00302: component 'GL_DEFAS_DBNAME_S' must be declared 
    drix10:/fmstop/r12apps/apps/apps_st/appl/gl/12.0.0/patch/115/odf>cat $GL_TOP/patch/115/sql/glistdab.pls|grep -n GL_DEFAS_DBNAME_S
    68: SELECT GL.GL_DEFAS_DBNAME_S.NEXTVAL
    81: fnd_message.set_token('SEQUENCE', 'GL_DEFAS_DBNAME_S');
    SQL> show user
    USER is "APPS"
    SQL> SELECT GL.GL_DEFAS_DBNAME_S.NEXTVAL
      FROM dual; 2                         -- with GL.
      NEXTVAL
      1002
    SQL> SELECT GL_DEFAS_DBNAME_S.NEXTVAL from dual;               --without GL. or using synonym.
      NEXTVAL
      1003
    drix10:/fmstop/r12apps/apps/apps_st/appl/gl/12.0.0/patch/115/odf>strings -a $GL_TOP/patch/115/sql/glistdab.pls|grep '$Header'
    REM | $Header: glistdab.pls 120.5 2006/03/13 19:56:21 cma ship $ |
    /* $Header: glistdab.pls 120.5 2006/03/13 19:56:21 cma ship $ */
    drix10:/fmstop/r12apps/apps/apps_st/appl/gl/12.0.0/patch/115/odf>strings -a $GL_TOP/patch/115/sql/glistdas.pls |grep '$Header'
    REM | $Header: glistdas.pls 120.4 2005/05/05 01:23:02 kvora ship $ |
    /* $Header: glistdas.pls 120.4 2005/05/05 01:23:02 kvora ship $ */

  • Trying to load a Dreamweaver CS5 extension called Image Show Pro to mac operating system 10.9.2. Trial version worked fine, but when I try to load full version, Adobe Extension Manager crashes.  I have downloaded new Extension Manager for CS5. and still c

    Trying to load a Dreamweaver CS5 extension called Image Show Pro to mac operating system 10.9.2. Trial version worked fine, but when I try to load full version, Adobe Extension Manager crashes.  I have downloaded new Extension Manager for CS5. and still crashes. Anybody else experience this? email:[email protected]

    Hi bigd_bud,
    Can you see if the solutions in this post help?
    Re: Adobe Extension Manager crashes on mac 10.8
    Thanks,
    Preran

  • JNI Calling Java code when attaching to existing JVM

    I've got an Active/X that runs within IE, and also makes JNI calls (via the Invocation API) to Java code. Running within IE means there's already a JVM around, so I attach to it using JNI_GetCreatedJavaVMs
    This is fine. The problem is that I can't use the JNI findClass() to locate my Java classes, because I have no control over the classpath that the JVM is using to locate classes. The only solution I can think of so far is to either add my classes as part of the JVM, OR find out the classpath of the existing JVM (using System.getProperty("java.class.path") and copy my classes into that directory.
    Both solutions look ugly - anyone know of a cleaner way ?
    Mark.

    Toby, thanks for the reply.
    You're welcome.
    I notice from elsewhere on this forum, you're clearly a JNI expert.
    I've been known to work with it a little from time to time. =)
    My code has to work with JDK 1.1 so URLClassLoader is out. Writing my own classloader is fine, but how do I load it in the first place ? Is there something in JNI I've missed ?
    Possibly. Using DefineClass() you can load a class into the virtual machine, given it's byte-code. Now here's the tricky part. First, write your ClassLoader. It will be easiest if it doesn't rely on any other classes other than what is core to the JRE. Once you compile that classloader, you then need to include the bytecode as a resource in your executable/dll. Then, at runtime, you can load that resource, and use DefineClass to class-load it. Once you've class-loaded it, you can use NewObject, GetMethodID, CallXXXMethod, etc... to do the other class loading you need to do.
    Trust me, this really isn't as hard as it might sound.
    God bless,
    -Toby Reyelts
    As always, I recommend you check out the free, open-source JNI toolkit, Jace, at http://jace.reyelts.com/jace.

  • Error "Unable to load word breaker for locale 0. Error code 8007007e." with search service application.

    I recreate the Search service application and the default Content source stayning in the 'Recovering' status.
    The log give multiple error 'Unable to load word breaker for locale 0. Error code 8007007e.'
    The default language is English and the reference in registry for word breaker dll is naturallanguage1.dll but I found only the naturallanguage6.dll.

    Hi,
    For your issue, check your current language settings and ensure that search supports the current language.
    On the SharePoint Server open Registry Editor (Start -> type “Regedit” and hit enter). 
    Point to : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OfficeServer\14.0\Search\Setup\ContentIndexCommon\LanguageResources\Default\English
    Under the registry key for each of the languages there is a value called StemmerDLLPath and WBDLLPathOverride
    Updated the registry entry with NATURA~1.dll to NATURA~2.dll
    Point to Start -> Administrative Tools -> Services, right click on SharePoint Server Search 14 and click on Restart.
    Performed a Full Crawl and wait for the Full Crawl to complete and try searching again.
    For more detailed information, refer to the following blogs:
    http://blog.ithinksharepoint.com/2008/04/20/a-word-breaker-was-not-found-for-the-given-language-error-when-crawling-content/
    http://www.sharepoint2013.me/Blog/Post/175/Word-breakers-in-SharePoint-2013
    Best Regards,
    Lisa Chen
    Lisa Chen
    TechNet Community Support

  • Excel, PowerView error in SharePoint 2013: "An error occurred while loading the model for the item or data source 'EntityDataSource'. Verify that the connection information is correct and that you have permissions to access the data source."

    I've installed SQL Server 2012 SP1 + SP server 2012 + SSRS and PowerPivot add-in.
    I also configured excel services correctly. Everything works fine but the powerview doesn't work!
    While I open an excel workbook consist of a PowerView report an error occurs: "An error occurred while loading the model for the item or data source 'EntityDataSource'. Verify that the connection information is correct and that you have permissions
    to access the data source."
    error detail: 
    <detail><ErrorCode xmlns="http://www.microsoft.com/sql/reportingservices">rsCannotRetrieveModel</ErrorCode><HttpStatus xmlns="http://www.microsoft.com/sql/reportingservices">400</HttpStatus><Message xmlns="http://www.microsoft.com/sql/reportingservices">An
    error occurred while loading the model for the item or data source 'EntityDataSource'. Verify that the connection information is correct and that you have permissions to access the data source.</Message><HelpLink xmlns="http://www.microsoft.com/sql/reportingservices">http://go.microsoft.com/fwlink/?LinkId=20476&amp;EvtSrc=Microsoft.ReportingServices.Diagnostics.Utilities.ErrorStrings&amp;EvtID=rsCannotRetrieveModel&amp;ProdName=Microsoft%20SQL%20Server%20Reporting%20Services&amp;ProdVer=11.0.3128.0</HelpLink><ProductName
    xmlns="http://www.microsoft.com/sql/reportingservices">Microsoft SQL Server Reporting Services</ProductName><ProductVersion xmlns="http://www.microsoft.com/sql/reportingservices">11.0.3128.0</ProductVersion><ProductLocaleId
    xmlns="http://www.microsoft.com/sql/reportingservices">127</ProductLocaleId><OperatingSystem xmlns="http://www.microsoft.com/sql/reportingservices">OsIndependent</OperatingSystem><CountryLocaleId xmlns="http://www.microsoft.com/sql/reportingservices">1033</CountryLocaleId><MoreInformation
    xmlns="http://www.microsoft.com/sql/reportingservices"><Source>ReportingServicesLibrary</Source><Message msrs:ErrorCode="rsCannotRetrieveModel" msrs:HelpLink="http://go.microsoft.com/fwlink/?LinkId=20476&amp;EvtSrc=Microsoft.ReportingServices.Diagnostics.Utilities.ErrorStrings&amp;EvtID=rsCannotRetrieveModel&amp;ProdName=Microsoft%20SQL%20Server%20Reporting%20Services&amp;ProdVer=11.0.3128.0"
    xmlns:msrs="http://www.microsoft.com/sql/reportingservices">An error occurred while loading the model for the item or data source 'EntityDataSource'. Verify that the connection information is correct and that you have permissions to access the
    data source.</Message><MoreInformation><Source>Microsoft.ReportingServices.ProcessingCore</Source><Message msrs:ErrorCode="rsErrorOpeningConnection" msrs:HelpLink="http://go.microsoft.com/fwlink/?LinkId=20476&amp;EvtSrc=Microsoft.ReportingServices.Diagnostics.Utilities.ErrorStrings&amp;EvtID=rsErrorOpeningConnection&amp;ProdName=Microsoft%20SQL%20Server%20Reporting%20Services&amp;ProdVer=11.0.3128.0"
    xmlns:msrs="http://www.microsoft.com/sql/reportingservices">Cannot create a connection to data source 'EntityDataSource'.</Message><MoreInformation><Source></Source><Message>For more information about this error navigate
    to the report server on the local server machine, or enable remote errors</Message></MoreInformation></MoreInformation></MoreInformation><Warnings xmlns="http://www.microsoft.com/sql/reportingservices" /></detail>
    Please help me to solve this issue. I don't know if uploading the excel workbook is enough or maybe It needed to connect to another data source.
    I Appreciate in advance.

    Hi Ali.y,
    Based on the current error message, the error can be related to the
    Claims to Windows Token Service (C2WTS) and is an expected error under certain conditions. To verify the issue, please check the aspects below:
         1. The C2WTS Windows service and C2WTS SharePoint service are both running.
         2. Check the SQL Server Browser service is running on the machine that has the PowerPivot instance of SSAS.
         3. Check the domain. You're signing into SharePoint with a user account in some domain (call it Domain A).  When Domain A is equal to Domain B which SharePoint server itself is located (they're the same domain), or Domain
    A trusts Domain B.
    In addition, the error may be caused by Kerberos authentication issue due to missing SPN. In order to make the Kerberos authentication work, you need to configure the Analysis Services to run under a domain account, and register the SPNs for the Analysis
    Services server.
    To create the SPN for the Analysis Services server that is running under a domain account, run the following commands at a command prompt:
    • Setspn.exe -S MSOLAPSvc.3/Fully_Qualified_domainName OLAP_Service_Startup_Account
    Note: Fully_Qualified_domainName is a placeholder for the FQDN.
    • Setspn.exe -S MSOLAPSvc.3/serverHostName OLAP_Service_Startup_Account
    For more information, please see:
    How to configure SQL Reporting Services 2012 in SharePoint Server 2010 / 2013 for Kerberos authentication
    Regards,
    Heidi Duan
    Heidi Duan
    TechNet Community Support

  • Tomcat Crashes for JNI ?

    Hello everyone,
    I am facing a serious problem. This is as follows:
    1. I have wrote some audio/video conversion fuctions using C and make the shared library (*.so files) in linux.
    2. I have wrote the JNI code (making it shared library also, *.so file) to access the library functions created in step 1.
    3. Then I use JAVA and Java Native codes to use the JNI. I load the library created by JNI code with Java.
    4. Finally, I have created a JSP page. Actuall JSP page acts as the conversion client program of audio/video conversion.
    The problem is:
    If I open the JSP page in one browser , the conversion is successfull.
    But when I open two browsers and try to convert at the same time, the tomcat crashes, so conversion fails.
    Why tomcat crashes ? Is it for JNI ? Is there any JNI drawbacks for such case ?
    It will be greate help, if someone can answer.
    Thanks in advanced.
    James

    I used the following page and was not able to reproduce the problem:
    <%@ taglib uri="/webapp/DataTags.tld" prefix="jbo" %>
    <jbo:ApplicationModule id="Mypackage1Module" definition="Project2.Mypackage1Module" releasemode="Stateful" />
    <%@ page contentType="text/html;charset=windows-1252"%>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>
    Hello World
    </title>
    </head>
    <jbo:RowsetNavigate datasource="Mypackage1Module.DeptView1" action="first" />
    <body>
    <% for(int i = 0; i < 1000; i++)
    %>
    <br>Department name(<%= "" + i %>):
    <jbo:ShowHint dataitem="Dname" datasource="Mypackage1Module.DeptView1" hintname="LABEL" />
    <jbo:ShowValue datasource="Mypackage1Module.DeptView1" dataitem="Dname" ></jbo:ShowValue>
    <%
    %>
    </body>
    </html>
    <jbo:ReleasePageResources />

  • Core dump on solaris 8/7 making JNI call.

    Hi,
    I am running solaris 8 and solaris 7 with Java 1.3.1. I have required solaris patches installed on the machine for java 1.3.1.
    From a C program I am making some JNI calls and when I run the program it core dumps at the very first JNI call. C program that make JNI calls are in a .so file.
    Same C code with Java 1.3.1 is running fine on window 2000, AIX 5.1, RedHat Advanced Server 2.1 and SuSE Enterprise Linux 7.
    Any help will be greatly appriciated.
    Thanks

    Hiya,
    Any resolution to this post , we have a native JNI call on a Websphere server running on Solaris 8 .. and same thing happening .. random core dump on the box ..
    No warning , no explanation
    Thanks so much for your help
    (btw . running Sun jvm 1.4.2_13)

  • How to compile a dll for JNI in the CMD correctly

    Now I find alot of old threads on using the mno command in cygwin to created dlls to use as an interface between c and Java, however I know this command is no longer available in cygwin and so I took the advid of downloading minGW and using this in the CMD instead.
    However every example I try to compile and run this way throws the unsatified link error when the native function is to be called by the Java program. I believe it must be a compiling error creating a mismatch between the native function and the function to be called.
    Here is the method I'm using to comile dlls for JNI, it is from the FAQ section of the minGw website:
    gcc -Wall -D_JNI_IMPLEMENTATION_ -Wl,--kill-at
    -Ic:/j2sdk1.4.1_02/include -Ic:/j2sdk1.4.1_02/include/win32
    -shared someJavaImp.c -o JavaImp.dll
    Is this how dll should be compiled? If not any suggestions?

    sudsey wrote:
    I know how to program well in C and Java, I just need to know the proper way to compile a dll for JNI.1. Get the MS IDE
    2. Create a dll project - it must NOT be a managed dll
    3. All done.

  • Local ref garbage collection within "nested" JNI calls

    I am using a JVM started in C++ to make calls to java classes. The C++ code makes JNI call into the JVM which instantiates a java class. The java class, in the course of execution, makes other JNI calls. All this happens on one thread of execution.
    What I am seeing is that local references from the native methods being called by the java class are not being released until the initial C++ native call exits. The JNI spec (text included below) seems to indicate there is registry of "nonmovable local references to Java objects" which "keeps the objects from being garbage collected". Is there only one such registry which does not get deleted until the initial C++ native call exits? If so, this would explain what I am seeing. How do I get around it?
    Thanks,
    Iztok
    From the JNI spec:
    "To implement local references, the Java VM creates a registry for each
    transition of control from Java to a native method. A registry maps nonmovable local references to Java objects, and keeps the objects from being garbage collected. All Java objects passed to the native method (including those that are returned as the results of JNI function calls) are automatically added to the registry. The registry is deleted after the native method returns, allowing all of its entries to be garbage collected."

    When I say "initial" I mean the initial C++ JNI call into a JVM running in a C++ process as shown in the pseudo code below. initNativeFunc() makes a call to Foo.doSomething() function which calls nativeFunc2 (another native function). Only a local reference to Retval was created in nativeFunct2, so when nativeFunct2 returns and the Retval is no longer used in Foo it should be a candidate for garbage collection. But this is not what happens. The Retval from nativeFunc2 is not being cleaned up until Foo.doSomething() returns. If I make the loop in Foo.doSomething() long enough, NewDoubleArray() returns a NULL when it runs out of memory.
    void initNativeFunc() {
    jclass clazz = env->FindClass("Foo");
    jmethodID mid = env->GetMethodID(clazz, "doSomething", "()V");
    env->CallVoidMethod(clazz, mid, ...);
    JNIEXPORT jobject JNICALL nativeFunc2() {
    jclass clazz = env->FindClass("Retval");
    jmethodID mid = env->GetMethodID("Retval, "<init>", "()V");
    jobject retval= env->NewObject(clazz, mid);
    jdoubleArray da = env->NewDoubleArray(100000);
    jfieldID fid = ...
    env->SetObjectField(retval, fid, da);
    return retval;
    public class Foo {
    public native void nativeFunc2();
    public void doSomething() {
    for (int i = 0; i < 100; i++) {
    Retval retval = nativeFunc2();
    }

  • Stack Overflow Error for JNI program with Jdk1.3

    I wrote a JNI wrapper for a third party sofware (written in C) to use some exported functions provided. My program runs fine when using Sun JDK1.2.2, but I got the following error when using Jdk1.3 to run the program (It's a runtime error, only the version of runtime virtual machine matters.)
    # An EXCEPTION_STACK_OVERFLOW exception has been detected in native code outside
    the VM.
    # Program counter=0x9073337
    A stack overflow was encountered at address 0x09073337.
    I tried IBM jdk 1.2.2, it gave me a similar error complaining about the stack overflow error.
    The vendor of the third party software denies any wrong doing in their code and I don't have their source code. A test client (simulate the Java client) I wrote in C works perfectly fine and as I mentioned earlier the same java progarm runs OK with jdk 1.2.2, without any change to my system stack size. Does any body know what this is about and the solution for this?
    Thanks!
    My email: [email protected]

    I had the same exception occur in my JNI code and I have some advice on things to look for.
    Symptoms: The C++ code runs fine when called in an native executable but when it is wrapped by a JNI call inside a DLL you get the following exception:
    An unexpected exception has been detected in native code outside the VM.
    Unexpected Signal : EXCEPTION_STACK_OVERFLOW occurred at PC=0x100d72e5
    Function name=_chkstk
    The address will be different of course.
    In my tests I isolated the problem to an allocation of a char array like so at the top of one of my wrapped C++ methods:
    char buf[650000];
    As you see this code is requesting 650000 bytes of stack memory. When run in a native executable there was no problem but when I ran it wrapped in the JNI call it blew up.
    Conclusion: There is a much smaller stack space when using JNI OR the added overhead of my JNI wrapper exhausted the available stack space OR this is a stack space issue related to DLLs.
    Hope this helps. Anyone with insight on this please put in your 2 cents.

  • Load Test Tools for CC&B 2.2?

    We are evaluating four load test tools for CC&B 2.2. JMeter (Free), BadBoy (Free), TheGrinder3 (Free), Selenium (Free) and Loadrunner 9.5.1.
    1) Does anyone out there have a load test success story to share? If so, be sure to mention which tool or tool combination.
    2) Can anyone recommend another solution we might want to evaluate?
    3) It appears none of these tools work "out of the box" with CC&B. GUI rendering mode fails ajax calls. Does anyone have a trick for working around/through this issue?
    At this point, it appears the best options are:
    1) Use a combination of JMeter and BadBoy. We record the gui navigation in BadBoy and run the script in JMeter. JMeter doesn't support https GUI capture, but it seems to be the better tool for running the scripts and analyzing the results. BOTH TOOLS ARE FREE.
    2) Loadrunner VuGen. Fails on replay due to the ajax calls. Manual scripting is the only workaround found so far.
    TheGrinder3 has no GUI replay. You can't watch the replay. Also, passwords are clear text.
    Selenium only works with Firefox. LVVWD doesn't use/support firefox.
    I should also mention that our criteria assumes minimal load testing in the near future and are trying very hard to avoid spending big $$$ for upgrade and maintenance fees.

    My company used AppLoader to run tests through NRG Global. We didn’t have a lot of people to dedicate to the testing, so we paid NRG a consulting fee to do it for us (for surprisingly less than we thought!). We had them test a Citrix & .net client/server application (with 300 users) and an Apache web application with Ajax (150 users). AppLoader is protocol independent, so it worked just fine with both. Also, it tests from the front end, so you can watch the GUI replay. They also have password encryption, although we didn’t use it for our tests.
    They were able to run the tests & get the data back to us quickly. We ended up with some failures & errors, but they gave us a detailed report with screenshots, logs & graphs which enabled us to find the problem, get it fixed and get our application up quickly. Turns out we had a memory leak. It was a relief to have the test done so fast, thorough & without the huge price tag. I spoke with the consultant there directly. She was very nice & helpful walking me through the results. Hope that helps. Good luck!

  • Stack overflow in JNI call

    Hi,
    I am doing a wrapper with JNI for a Windows library of image compression. I have a test program running correctly in C. This program compress data and it can move a lot of memory. If I call this program from a JNI functions I obtain a JNI error:
    An unrecoverable stack overflow has occurred.
    An unexpected exception has been detected in native code outside the VM.
    Unexpected Signal : EXCEPTION_STACK_OVERFLOW (0xc00000fd) occurred at PC=0x5FF88497
    Function=unpack_data+0x189D7
    Library=C:\WINDOWS\system32\NCSEcw.dll
    This error is produce inside my compression library. I try to adjust the parameters (-Xms -Xmx -Xss) of the JVM but in any case before the process ends it shows this exception. I have done other JNI interfaces and I never found with this problem before. Can anybody help me?
    Thanks in advance.

    I found in this forum a piece of code with a same kind problem but It is simpler than mine. I have proved this program in Windows and it produce the same error. In Linux it runs but if I enlarge the array largebuf it ends with the same error. In Linux I can reserve until 2 MB (in windows +-256K). Is there any way to increase the stack size in a jni call?.
    #include <stdio.h>
    #include <jni.h>
    #include "test.h"
    int myprint2(int a, int b){
         char extrabuf[100];
         printf("got here next\n");
         extrabuf;
         return 0;
    int myprint(int a, int b){
         char largebuf[260000];
         printf("got here\n");
         myprint2(1,1);
         largebuf;
         return 0;
    JNIEXPORT jint JNICALL Java_test_init(JNIEnv *env, jobject obj){
         myprint(1,1);
         return 1;
    test.java
    public class test{
         public native int init();
         public static void main(String []args){
              new test();
         public test(){
              System.loadLibrary("Nat");
              System.out.println(this.init());
    }

Maybe you are looking for