Native DLL writing to stdout

I've been working with my native DLL and would like to instrument it. Ideally I would like to see some logging output from the native DLL that is inline with the Log4J output of the java application. However, when I use something like:
fprintf("This is a value %s", variable);
The output appears in arbitray locations in the console output.
What methods have others used to instrument their JNI DLLs?

Either call the java log method or write your own logger.
I think there is a C++ version of log4j although I haven't used it. And it might be complicated using them both.

Similar Messages

  • How to deploy the native dll with the applet package by Sun Java Plugin

    I have an applet which use some native methods. I have written code for the native dll, but I don't know how to deploy the DLL with the applet jar file for Sun Java Plugin. What parameter do i should pass to System.loadLibrary()? I think the solution should don't care which browser used by the end client. How to do it? How to deal with the applet security problem?
    Thank for any comment!

    I have a similar problem.
    Trying to use the javax.comm package requires that the user have the win32com.dll located on their machine.
    I have solved the problem by using a signed applet that allows me to write the dll to the clients machine and then run the code but ideally I would like to run the code without writing the dll to the users machine...i.e. I want to load the dll directly through the applet in the same way the class files are loaded forthe applet are loaded without copying them to the clients machine. After trying everything I have come to the conclusion that it is NOT possible. The calls loadLibrary and load both require that the dll reside on the clients machine. If anyone has had a different experience please rebut this.
    Rob

  • How to call the DLL writing in Vb6.0 from testsatnd?

    Hi,
    I want to call a dll writting in VB6.0 from teststand. But as i see from the "Step Setting" in teststand, only the C/C++ Dll can be selected in the "adapter" type. I try to use this one as my adapter to call my VB6.0 dll, in result, there is no function can be seen in the "function" tab in teststand.Anyone know how to call the DLL writing in Vb6.0?
    Solved!
    Go to Solution.

    Hi Ivan,
    Just to be sure that your DLL is not wrong
    you have check if all functions are well and present.
    There is  tool called "Dependency Walker"   You can download it at http://dependencywalker.com/ .
    With it you can look "inside" your dll
    If you will see your functions there, you will see them (in my case !!always!!) in TestStand, too.
    Hope this helps 
    Greetings
    Juergen
    =s=i=g=n=a=t=u=r=e= Click on the Star and see what happens :-) =s=i=g=n=a=t=u=r=e=

  • Native dll lib and 64-bit/32-bit platform

    Dear All:
    My java app uses a customized native dll. My question is, if I want JWS to work on both 32- and 64-bit platforms (maybe more accurate, JRE), do I have to compile the DLL into 32 and 64 bit versions and configure JNLP so that it can identify the underlying JRE and use the proper dll? If so, how?
    Also, I tried to specify the dll in such a way as <nativelib href="products/signed-xyzLib.dll.jar"/> but it give me exception that shows the system looks for the dll in firefox or jre/bin's directory, even thou the dll is downloaded and resides in the temporary cache (in my Windows 7, it's like: .../AppData/LocalLow/Sun/Java/Deployment/cache/... ). Why is it not found by the system (javaws, I suppose) ?
    Thanks,
    Johnny

    well, I consulted this link (http://www.velocityreviews.com/forums/t126704-java-webstart-and-jni.html) before I posted my question. It says I need to wrap the DLL into a jar file first. and after JWS is launched, the dll file in question was unpacked and resided in the user cache. I am not sure if it's necessary but it seems doesn't hurt.
    Thanks,
    John

  • Invoking Native Dll in Java

    Hi,
    We have tried to invoke a native dll method using JNI in java.
    While invoking the dll method(below native code dll) we face the "Access violation error".
    But the very same native implementation code is working successfully when invoked from VC++ Exe application.
    We have given the Java class file, header file, CPP implementation of the method and the error report below.
    Can anybody let us know if there is some fault in the way code we have coded?
    *{color:#0000ff}Source Code:{color}
    {color:#0000ff}---------------------{color}
    _______________________________________WsqLib.java____________________________________________________________________
    class WsqLib
    private native int BitmapToWSQ();
    private native int WsqToBitmap();
    public static void main(String[] args)
    WsqLib wsqlib=new WsqLib();
    System.out.println("wsqlib.BitmapToWSQ() ==> "+wsqlib.BitmapToWSQ());
    static
    System.loadLibrary("WsqLib");
    # Create a class (WsqLib.java) that declares the native method.
    # We use javac to compile the WsqLib source file, resulting in the class file WsqLib.class.
    # We use javah to generate a C header file (WsqLib.h) containing the function prototype for the native method implementation.*
    _______________________________________WsqLib.h*_______________________________________________________________________
    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include "jni.h"
    /* Header for class WsqLib */
    #ifndef IncludedWsqLib
    #define IncludedWsqLib
    #ifdef __cplusplus
    extern "C" {
    #endif
    * Class: WsqLib
    * Method: BitmapToWSQ
    * Signature: ()I
    JNIEXPORT jint JNICALL Java_WsqLib_BitmapToWSQ
    (JNIEnv *, jobject);
    * Class: WsqLib
    * Method: WsqToBitmap
    * Signature: ()I
    JNIEXPORT jint JNICALL Java_WsqLib_WsqToBitmap
    (JNIEnv *, jobject);
    #ifdef __cplusplus
    #endif
    #endif
    # CPP implementation (WsqLib.cpp) of the native method is as below.
    # We compiled the cpp implementation into a native library, creating WsqLib.dll.
    # We use the WsqLib.dll in WsqLib.java.
    _______________________________________WsqLib.cpp______________________________________________________________________
    #include "stdafx.h"
    #include "WsqLib.h"
    #include "_vcclrit.h"
    #include "gdiplus.h"
    #include <afxstr.h>
    #include <atlimage.h>
    #include "WsqLib1.h"
    static const GUID guidBmp =
    { 0x557cf400, 0x1a04, 0x11d3, { 0x9a, 0x73, 0x00, 0x00, 0xf8, 0x1e, 0xf3, 0x2e } };
    extern "C"
    int debug = 0;
    JNIEXPORT jint JNICALL Java_WsqLib_BitmapToWSQ(JNIEnv *, jobject)
    Gdiplus::Bitmap *pBitmap = Gdiplus::Bitmap::FromFile(L"temp.bmp", TRUE);
    Gdiplus::BitmapData lockedBitmapData;
    Gdiplus::Rect rect(0, 0,pBitmap->GetWidth(),pBitmap->GetHeight());
    //Error occured in this Line.
    pBitmap->LockBits( &rect, Gdiplus::ImageLockModeRead, PixelFormat8bppIndexed, &lockedBitmapData );
    int byteCount = pBitmap->GetWidth() * pBitmap->GetHeight() * (int)(8 / 8);
    unsigned char *pPixelData2 = new unsigned char[byteCount];
    memset(pPixelData2, 0, (size_t)byteCount);
    unsigned char pBytes = (unsigned char) lockedBitmapData.Scan0;
    for (int index = 0; index < byteCount; index++)
    pPixelData2[index] = pBytes[index];
    pBitmap->UnlockBits(&lockedBitmapData);
    unsigned char *pPixelData = pPixelData2;
    int pixelsPerInch = (int)pBitmap->GetHorizontalResolution();
    float compressionFactor = (float)( (float)((int)75) / 100.0);
    unsigned char *pWsqBytes = NULL;
    int wsqBytesCount = 0;
    int result = 0;
    result = wsq_encode_mem(
    &pWsqBytes, // Output data buffer
    &wsqBytesCount, // Length of output data buffer
    compressionFactor, // Determines the amount of lossy compression.
    pPixelData, // Input pixel data
    pBitmap->GetWidth(), // Pixel width of the pixmap
    pBitmap->GetHeight(), // Pixel height of the pixmap
    8, // Depth (bits) of the pixmap
    pixelsPerInch, // Scan resolution of the image in integer units of pixels per inch
    (char *)NULL // Optional (we do not want to use this - we may even want to remove the implementation)
    if (result == 0)
    FILE *fptr1;
    fptr1=fopen("C:\\saran2.wsq_1.0","wb");
    fwrite(pWsqBytes,wsqBytesCount,1,fptr1);
    fclose(fptr1);
    return 10;
    JNIEXPORT jint JNICALL Java_WsqLib_WsqToBitmap(JNIEnv *, jobject)
    BYTE gData[242998];
    Gdiplus::Bitmap* image;
    CFile file;
    file.Open("temp.wsq_1.0",CFile::modeRead,NULL);
    file.Read(gData,242998);
    unsigned char pByteArray =(unsigned char)gData;
    unsigned char *pPixelData = NULL;
    int bitmapWidth = 0;
    int bitmapHeight = 0;
    int pixelDepth = 0;
    int pixelsPerInch = 0;
    int lossyFlag = 1;
    int byteArrayLength = 242998;
    int result = 0;
    result = wsq_decode_mem(
    &pPixelData, // Output image buffer
    &bitmapWidth, // Pixel width of the pixmap
    &bitmapHeight, // Pixel height of the pixmap
    &pixelDepth, // Depth (bits) of the pixmap
    &pixelsPerInch, // Scan resolution of the image in integer units of pixels per inch
    &lossyFlag, // Is the image lossy? F.I.I.K.
    pByteArray, // Input data buffer
    byteArrayLength // Input data buffer length
    if (result == 0 && pixelDepth == 8)
    image = new Gdiplus::Bitmap(bitmapWidth, bitmapHeight);
    Gdiplus::Rect bound( 0, 0,bitmapWidth,bitmapHeight);
    Gdiplus::BitmapData lockedBitmapData;
    image->LockBits( &bound, Gdiplus::ImageLockModeWrite, PixelFormat8bppIndexed, &lockedBitmapData );
    int imageRowSize = bitmapWidth * (8/8);
    unsigned char pBitmapPixelData = (unsigned char )lockedBitmapData.Scan0;
    int byteCount = bitmapWidth * bitmapHeight;
    for (int index = 0; index < byteCount; index++)
    pBitmapPixelData[index] = pPixelData[index];
    image->UnlockBits( &lockedBitmapData );
    else
    return result;
    image->Save(L"C:\\temp.bmp", &guidBmp);
    return 0;
    {color:#0000ff}Error report:{color}
    {color:#0000ff}-------------------{color}
    # An unexpected error has been detected by HotSpot Virtual Machine:
    # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x03920780, pid=380, tid=3572
    # Java VM: Java HotSpot(TM) Client VM (1.5.0_12-b04 mixed mode, sharing)
    # Problematic frame:
    # C 0x03920780
    --------------- T H R E A D ---------------
    Current thread (0x00036d88): JavaThread "main" [_thread_in_native, id=3572]
    siginfo: ExceptionCode=0xc0000005, reading address 0x00000004
    Registers:
    EAX=0x00000000, EBX=0x00000000, ECX=0x00000000, EDX=0x00000000
    ESP=0x0007f9a8, EBP=0x0007fa70, ESI=0x00000000, EDI=0x00000000
    EIP=0x03920780, EFLAGS=0x00010246
    Top of Stack: (sp=0x0007f9a8)
    0x0007f9a8: 00000000 00000000 00000000 00000000
    0x0007f9b8: 039204ba 00000001 00000000 000be780
    0x0007f9c8: 03726248 0007fa10 00000000 00000000
    0x0007f9d8: 03920430 0007fa2c 7a32b4fa ffffffff
    0x0007f9e8: 0007fa38 79e7bba9 79e7bbb1 cce41966
    0x0007f9f8: ffffffff 0007fa68 000a4b30 00000000
    0x0007fa08: 00000000 00000000 00000000 00000000
    0x0007fa18: 00000000 00000000 00000000 00000000
    Instructions: (pc=0x03920780)
    0x03920770: 03 00 74 05 e8 85 1b 77 76 33 d2 89 14 24 8b fe
    0x03920780: 8b 4e 04 8d 14 24 e8 05 65 e0 ff 8b d8 8b d3 8b
    Stack: [0x00040000,0x00080000), sp=0x0007f9a8, free space=254k
    Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
    C 0x03920780
    C 0x031e3171
    j WsqLib.BitmapToWSQ()I+0
    j WsqLib.main([Ljava/lang/String;)V+24
    v ~StubRoutines::call_stub
    V [jvm.dll+0x87599]
    V [jvm.dll+0xdfbb2]
    V [jvm.dll+0x8746a]
    V [jvm.dll+0x8e6ac]
    C [java.exe+0x14c5]
    C [java.exe+0x69cd]
    C [kernel32.dll+0x16d4f]
    Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
    j WsqLib.BitmapToWSQ()I+0
    j WsqLib.main([Ljava/lang/String;)V+24
    v ~StubRoutines::call_stub
    --------------- P R O C E S S ---------------
    Java Threads: ( => current thread )
    0x009f2b28 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=3996]
    0x009f1820 JavaThread "CompilerThread0" daemon [_thread_blocked, id=2832]
    0x009f0a68 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=404]
    0x009eb330 JavaThread "Finalizer" daemon [_thread_blocked, id=3304]
    0x009e9eb0 JavaThread "Reference Handler" daemon [_thread_blocked, id=1648]
    =>0x00036d88 JavaThread "main" [_thread_in_native, id=3572]
    Other Threads:
    0x009c8508 VMThread [id=492]
    0x009f0528 WatcherThread [id=2924]
    VM state:not at safepoint (normal execution)
    VM Mutex/Monitor currently owned by a thread: None
    Heap
    def new generation total 576K, used 497K [0x22a50000, 0x22af0000, 0x22f30000)
    eden space 512K, 84% used [0x22a50000, 0x22abc5b8, 0x22ad0000)
    from space 64K, 99% used [0x22ae0000, 0x22aefff8, 0x22af0000)
    to space 64K, 0% used [0x22ad0000, 0x22ad0000, 0x22ae0000)
    tenured generation total 1408K, used 115K [0x22f30000, 0x23090000, 0x26a50000)
    the space 1408K, 8% used [0x22f30000, 0x22f4cc28, 0x22f4ce00, 0x23090000)
    compacting perm gen total 8192K, used 20K [0x26a50000, 0x27250000, 0x2aa50000)
    the space 8192K, 0% used [0x26a50000, 0x26a553b8, 0x26a55400, 0x27250000)
    ro space 8192K, 63% used [0x2aa50000, 0x2af60590, 0x2af60600, 0x2b250000)
    rw space 12288K, 46% used [0x2b250000, 0x2b7f21b0, 0x2b7f2200, 0x2be50000)
    Dynamic libraries:
    0x00400000 - 0x0040d000 C:\WINDOWS\system32\java.exe
    0x7c900000 - 0x7c9b0000 C:\WINDOWS\system32\ntdll.dll
    0x7c800000 - 0x7c8f4000 C:\WINDOWS\system32\kernel32.dll
    0x77dd0000 - 0x77e6b000 C:\WINDOWS\system32\ADVAPI32.dll
    0x77e70000 - 0x77f01000 C:\WINDOWS\system32\RPCRT4.dll
    0x77c10000 - 0x77c68000 C:\WINDOWS\system32\MSVCRT.dll
    0x6d640000 - 0x6d7dd000 C:\Program Files\Java\jre1.5.0_12\bin\client\jvm.dll
    0x77d40000 - 0x77dd0000 C:\WINDOWS\system32\USER32.dll
    0x77f10000 - 0x77f56000 C:\WINDOWS\system32\GDI32.dll
    0x76b40000 - 0x76b6d000 C:\WINDOWS\system32\WINMM.dll
    0x6d290000 - 0x6d298000 C:\Program Files\Java\jre1.5.0_12\bin\hpi.dll
    0x76bf0000 - 0x76bfb000 C:\WINDOWS\system32\PSAPI.DLL
    0x6d610000 - 0x6d61c000 C:\Program Files\Java\jre1.5.0_12\bin\verify.dll
    0x6d310000 - 0x6d32d000 C:\Program Files\Java\jre1.5.0_12\bin\java.dll
    0x6d630000 - 0x6d63f000 C:\Program Files\Java\jre1.5.0_12\bin\zip.dll
    0x10000000 - 0x10075000 D:\Jagadeesan\JNI_NEW\WSQ\WsqLib.dll
    0x79000000 - 0x79045000 C:\WINDOWS\system32\mscoree.dll
    0x7c140000 - 0x7c357000 C:\WINDOWS\system32\MFC71D.DLL
    0x10200000 - 0x10287000 C:\WINDOWS\system32\MSVCR71D.dll
    0x77f60000 - 0x77fd6000 C:\WINDOWS\system32\SHLWAPI.dll
    0x77120000 - 0x771ac000 C:\WINDOWS\system32\OLEAUT32.dll
    0x774e0000 - 0x7761c000 C:\WINDOWS\system32\ole32.dll
    0x4ec50000 - 0x4edf3000 C:\WINDOWS\WinSxS\x86_Microsoft.Windows.GdiPlus_6595b64144ccf1df_1.0.2600.2180_x-ww_522f9f82\gdiplus.dll
    0x5d360000 - 0x5d36e000 C:\WINDOWS\system32\MFC71ENU.DLL
    0x79e70000 - 0x7a3d1000 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
    0x78130000 - 0x781cb000 C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd\MSVCR80.dll
    0x7c9c0000 - 0x7d1d4000 C:\WINDOWS\system32\shell32.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
    0x790c0000 - 0x79ba6000 C:\WINDOWS\assembly\NativeImages_v2.0.50727_32\mscorlib\bf3b003e3ac7e449bdf8fc9375318452\mscorlib.ni.dll
    0x79060000 - 0x790b3000 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorjit.dll
    0x5e380000 - 0x5e409000 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\diasymreader.dll
    VM Arguments:
    java_command: WsqLib
    Launcher Type: SUN_STANDARD
    Environment Variables:
    JAVA_HOME=C:\Program Files\Java\jdk1.5.0_12;
    CLASSPATH=C:\Program Files\Apache Software Foundation\Tomcat 5.5\shared\lib\*.jar;C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\axis\WEB-INF\classes\org\apache\axis\transport\http\*.classs;D:\JONAS_4_6_6\lib\ext\axis.jar;C:\Sun\jwsdp-1.6\jaxp\lib\endorsed\sax.jar;C:\tomcat50-jwsdp\jaxp\lib\endorsed\sax.jar;C:\Files\Java\jdk1.5.0_01\jre\lib;C:\Program Files\Java\jdk1.5.0_12\jre\lib\ext;
    PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;D:\Jagadeesan Backup\DotNet\DynamicLibrary\MathFuncsDll\Debug;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\Microsoft SQL Server\90\DTS\Binn\;C:\Program Files\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies;C:\Sun\jwsdp-1.6\jaxrpc\bin;C:\Sun\jwsdp-1.6\jaxp\lib;C:\Sun\jwsdp-1.6\jaxp\lib\endorsed;C:\Program Files\Java\jdk1.5.0_12\bin;C:\Sun\jwsdp-1.6\jwsdp-shared\bin;C:\Program Files\Microsoft Visual Studio\Common\Tools\WinNT;C:\Sun\jwsdp-1.6\jaxrpc\bin;C:\Sun\jwsdp-1.6\jaxp\lib;C:\Sun\jwsdp-1.6\jaxp\lib\endorsed;C:\Program Files\Java\jdk1.5.0_12\bin;
    USERNAME=Administrator
    OS=Windows_NT
    PROCESSOR_IDENTIFIER=x86 Family 15 Model 1 Stepping 2, GenuineIntel
    --------------- S Y S T E M ---------------
    OS: Windows XP Build 2600 Service Pack 2
    CPU:total 1 (cores per cpu 1, threads per core 1) family 15 model 1 stepping 2, cmov, cx8, fxsr, mmx, sse, sse2
    Memory: 4k page, physical 259888k(81380k free), swap 636388k(342588k free)
    vm_info: Java HotSpot(TM) Client VM (1.5.0_12-b04) for windows-x86, built on May 2 2007 02:07:59 by "java_re" with MS VC++ 6.0

    Is there any other reason for this error?There is one and only one reason for the error code 0xc0000005 - there is a pointer (C/C++) pointing somewhere it shouldn't.
    The above C code working fine while invoking in VC++ Exe application,
    But the error occured only while invoking in java using JNI.Which suggests only that sometimes that it works. It doesn't mean that it always works.
    There are a number of places in the C/C++ code where it could fail and none of them are being checked.

  • How to use native dlls in jws

    hi,all
    I need to use native dll to read registry,I know nativelib label,but after I put the dlls to a jar,and use label <nativelib> to quote the jar,the system tell me error following:
    JNLPException[category: Security error : Exception: null : LaunchDesc: null ]
         at com.sun.javaws.LaunchDownload.checkJNLPSecurity(Unknown Source)
         at com.sun.javaws.Launcher.downloadResources(Unknown Source)
         at com.sun.javaws.Launcher.prepareLaunchFile(Unknown Source)
         at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
         at com.sun.javaws.Launcher.launch(Unknown Source)
         at com.sun.javaws.Main.launchApp(Unknown Source)
         at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
         at com.sun.javaws.Main$1.run(Unknown Source)
         at java.lang.Thread.run(Unknown Source)
    when I use jar href="..."to use this jar(This jar is packed dll files),the system tell me
    com.sun.deploy.net.FailedDownloadException: Unable to load resourcesFfile:/H:/test/dist/lib/ICE_JNIRegistry.jar
         at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
         at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
         at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
         at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
         at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
         at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source)
         at com.sun.javaws.LaunchDownload.downloadJarFiles(Unknown Source)
         at com.sun.javaws.LaunchDownload.downloadEagerorAll(Unknown Source)
         at com.sun.javaws.Launcher.downloadResources(Unknown Source)
         at com.sun.javaws.Launcher.prepareLaunchFile(Unknown Source)
         at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
         at com.sun.javaws.Launcher.launch(Unknown Source)
         at com.sun.javaws.Main.launchApp(Unknown Source)
         at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
         at com.sun.javaws.Main$1.run(Unknown Source)
         at java.lang.Thread.run(Unknown Source)
    and
    java.util.zip.ZipException: ZIP file must have at least one entry
         at java.util.zip.ZipOutputStream.finish(Unknown Source)
         at java.util.zip.DeflaterOutputStream.close(Unknown Source)
         at java.util.zip.ZipOutputStream.close(Unknown Source)
         at com.sun.deploy.net.HttpDownloadHelper.download(Unknown Source)
         at com.sun.deploy.cache.Cache.downloadResourceToTempFile(Unknown Source)
         at com.sun.deploy.cache.Cache.downloadResourceToCache(Unknown Source)
         at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
         at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
         at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
         at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
         at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
         at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source)
         at com.sun.javaws.LaunchDownload.downloadJarFiles(Unknown Source)
         at com.sun.javaws.LaunchDownload.downloadEagerorAll(Unknown Source)
         at com.sun.javaws.Launcher.downloadResources(Unknown Source)
         at com.sun.javaws.Launcher.prepareLaunchFile(Unknown Source)
         at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
         at com.sun.javaws.Launcher.launch(Unknown Source)
         at com.sun.javaws.Main.launchApp(Unknown Source)
         at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
         at com.sun.javaws.Main$1.run(Unknown Source)
         at java.lang.Thread.run(Unknown Source)
    now I'm not sure how to zip the dlls so that it can be used in nativelib?and how to used the <nativelib> label? just add it in the jnlp file ok?
    Thanks.

    >
    Thanks,Andrew!>Your detailed and technically specific reply is all the thanks I need ( and probably more than I deserve ;).
    I am still mulling (thinking) over your reply, there is nothing that 'jumps out at me' as being wrong with the way it is done, it all is looking like it 'should' work. The only other thing I can think to check is "did JaNeLA report any problems with it?"
    Oh hang on, wait just a second..
    If this webstart app. uses a native lib, it must declare security 'all-permissions'. See below for a 'hand written' variation to your posted JNLP file. Please make sure you validate these edits, since I did not (and I'm a little drunk, at this moment!).
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <jnlp codebase="file:/H:/test/dist/" href="launch.jnlp" spec="1.0+">
        <information>
            <title>Basic Application Example</title>
            <vendor>Sun Microsystems Inc.</vendor>
            <homepage href="http://appframework.dev.java.net"/>
            <description>A simple java desktop application based on Swing Application Framework</description>
            <description kind="short">Basic Application Example</description>
        <offline-allowed/>
    </information>
    <security>
      <all-permissions />
    </security>
        <resources>
    <j2se version="1.5+"/>
    <jar eager="true" href="test.jar" main="true"/>
        <jar href="lib/appframework-1.0.3.jar"/>
    <jar href="lib/swing-worker-1.1.jar"/>
    <jar href="lib/registry.jar"/>
    <jar href="lib/swing-layout-1.0.3.jar"/>
    <nativelib href="lib/ICE_JNIRegistry.jar"/>
    </resources>
        <application-desc main-class="test.TestApp">
        </application-desc>
    </jnlp>Oh yeah, yeah. And if you could note for future posts..
    When posting code, code snippets, HTML/XML(/JNLP) or input/output, please use the code tags. To do that, select the code, then click the CODE button seen on the Plain Text tab of the message posting form. This helps to retain the indentation and formatting of the text, and also helps avoid characters in the code as being interpreted as formatting (by the 'forum software'). ..And it also makes it pretty - but perhaps I should not mention that (it seems so 'un-hacker').
    And BTW, what is that standalone=''no" attribute in the opening XML element? Are you +sure+ you validated this in JaNeLA?

  • Calling 32-bit native DLL hosted on Azure

    I am looking for guidance on how to call 32-bit native DLL through WCF service hosted on Azure. I've been unable to find a tutorial but the path appears to be...
    * Register DLL using Startup task
    * Write WCF service hosted in Azure
    * Enable 32-bit for the application pool
    * Add reference to 32-bit COM server to my WCF service
    * In my WCF service, create instance of server and call method
    Am I on the wrong track or am I missing anything?
    Would it be possible/easier to use PInvoke to avoid having to register COM server?  I'm not sure how to reference the DLL for PInvoke DLLImport statement.

    Hi,
    There was an blog detailed how to use 32bit Native DLL in Windows Azure,  in this blog, the author demonstrated how to use a 32bit dll in the Cloud by means of hosting it under a 32bit process and then use WCF communication to do the
    marshaling.
    #blog link:
    http://blogs.msdn.com/b/haniatassi/archive/2009/03/20/using-a-32bit-dll-in-the-windows-azure.aspx
    Hope this helps
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • Calling native dll, where to put it in JDev project ?

    After many attempts to call native DLL (via JNI) from java (I always ended with java.lang.UnsatisfiedLinkError), I found out that classloader (System.loadLibrary("mydll"))ignores all class path settings in JDeveloper project. My only success was when I put created dll somewhere into system PATH. I thought, that putting it in Class directory will do. It didn't. Is it normal behavior?

    Opps sorry guys,
    We did indeed using windows environment variables since it's not something that bad since we only set this once in the local machine.
    If you're using swing for your standalone apps in your machine, just add the path in the user/system environment variables. That should do the trick, if it doesn't , I will asked the developer specifically but I believe that's what we changed it to.
    Message was edited by:
    putera79

  • Cannot get bitmap from native DLL from multi threaded Java app.

    I have a native DLL that gives me a HBITMAP (Windows handle to bitmap). I have made a JNI wrapper for this that gives me a BufferedImage back. The native code simple gets the actual bitmap for the handle, converts the RGB byte triplets to RGB ints, puts this in a jintArray and creates a BufferedImage.
    This all works fine within a single Java thread. If I do this multi threaded (thread 1 calls the native function and several seconds later, thread 2 calls the native function) I keep getting the last image of the first thread. Can enyone help me out?
    I know that this is probably a question for MSDN but I just know that they will tell me its a JNI question.
    The native code:
    JNIEXPORT jobject JNICALL Java_somenamespace_getPicture
    (JNIEnv *env, jclass cl, jstring serialNumber)
    jobject jImage;
    jclass jImageClass;
    jmethodID jMethod;
    jfieldID jField;
    jintArray rgbArray;
    char *str;
    char *charArray;
    int *intArray;
    int w, h, index, type;
    HBITMAP hbmp;
    BITMAP bmp;
    str = (char*)((*env)->GetStringUTFChars(env, serialNumber, NULL));
    // Gets the HBITMAP handle from the native DLL. The first argument is to select the device, based on serial number.
    getPicture(str, &hbmp);
    (*env)->ReleaseStringUTFChars(env, serialNumber, str);
    // Get the BITMAP for the HBITMAP
    GetObject(hbmp, sizeof(BITMAP), &bmp);
    // Create my BufferedImage
    jImageClass = (*env)->FindClass(env, "java/awt/image/BufferedImage");
    jMethod = (*env)->GetMethodID(env, jImageClass, "<init>", "(III)V");
    jField = (*env)->GetStaticFieldID(env, jImageClass, "TYPE_INT_RGB", "I");
    type = (*env)->GetStaticIntField(env, jImageClass, jField);
    jImage = (*env)->NewObject(env, jImageClass, jMethod, bmp.bmWidth, bmp.bmHeight, type);
    // Get the RGB byte triplets of the BITMAP
    charArray = (char *)malloc(sizeof(char) * bmp.bmHeight * bmp.bmWidth * 3);
    GetBitmapBits(hbmp, sizeof(char) * bmp.bmHeight * bmp.bmWidth * 3, charArray);
    // Allocate space to store the RGB ints and convert the RGB byte triplets to RGB ints
    intArray = (int *)malloc(sizeof(int) * bmp.bmHeight * bmp.bmWidth);
    index = 0;
    for (h = 0; h < bmp.bmHeight; ++h)
    for (w = 0; w < bmp.bmWidth; ++w)
    int b = *(charArray + index * 3) & 0xFF;
    int g = *(charArray + index * 3 + 1) & 0xFF;
    int r = *(charArray + index * 3 + 2) & 0xFF;
    *(intArray + index) = 0xFF000000 | (r << 16) | (g << 8) | b;
    ++index;
    // Create a jintArray for the C RGB ints
    rgbArray = (*env)->NewIntArray(env, bmp.bmHeight * bmp.bmWidth);
    (*env)->SetIntArrayRegion(env, rgbArray, 0, bmp.bmHeight * bmp.bmWidth, (jint*)intArray);
    // Use BufferedImage.setRGB() to fill the image
    jMethod = (*env)->GetMethodID(env, jImageClass, "setRGB", "(IIII[III)V");
    (*env)->CallVoidMethod(env, jImage, jMethod,
    0, // int startX
    0, // int startY
    bmp.bmWidth, // int width
    bmp.bmHeight, // int height
    rgbArray, // int[] rgbArray
    0, // int offset
    bmp.bmWidth); // int scansize
    // Free stuff
    (*env)->DeleteLocalRef(env, rgbArray);
    free(charArray);
    free(intArray);
    return jImage;
    }I already tried working with native HDCs (GetDC, CreateCompatibleBitmap, SelectObject, GetDIBits, ...) but this just complicates stuff and gives me the same result.

    Have you verified what the "native DLL" gives you back on the second call?The HBITMAP handle returned is the same each call (no matter which thread). The actual BITMAP associated with this handle is only updated in the first thread.
    How are you determining that the image is the same?If I point the camera (I don't get a stream, I just get individual images) to a moving scene, I get different images for each call from within the first thread. The second thread only gets the latest image from the first thread. There is no concurrency of the threads and all methods are synchronized.
    Specifically did you verify that the problem is not that your test code itself is using the same instance?Yes, I tested the native side as well as the Java side. The BufferedImage is always an exact copy of the native BITMAP.
    Try printing out the hash for each instance.I have written the image to a file in the native code itself to eliminate anything related to the mechanism of returning the BufferedImage. This had the same result.
    The return values of all native calls all indicate successful calls.
    I am suspecting the native side of creating a second graphical context for the second thread while it keeps refering to the first context.
    (I will start a thread on the MSDN as well and will post here if anything turns up.)

  • 32bit native dll and 64bit jdk

    is it possible to use 32bit native dll with 64bit jdk5 and 64bit win2003?
    i am trying to use mlib_jai.dll and i think i copied it ot the right place, still i get message that it isn't available. my only gues is that it is related to 32/64 bit isuses, as mlib_jai.dll is comppiled with 32bit compiler. it works on 32bit windows and jdk1.4.
    any ideas?
    dario

    Hi,
    Yes you can run your 32 and 64-bit applications side by side. You will need to install both the 32 and 64-bit oracle client as well as the required data access driver for each application in separate oracle homes. The only gotcha is if these applications are running as a hosted applications within IIS, you will need to be sure you are on a version of IIS that allows you to configure separate application pools for 32 and 64-bit worker processes. i.e IIS 7.0. IIS 6.0 allows you to configure worker processes for 32-bit on x64, but it has to be one or the other. You cannot use both at the same time. See the following: http://support.microsoft.com/kb/894435. If you are running IIS 7 then you can configure separate application pools for the 32 and 64-bit apps. If you are running IIS 7 then its easy to configure the application pool for your 32-bit hosted app to enable 32-bit support by setting a property of the app pool.
    HTH
    Jenny

  • Should I create native dll's always?

    Hi all,
    Im trying to learn JNI. as a first step I have tried creating a basic sample to understand JNI. I created a JAVA program and called a method in native code(C++). The native code was in the form of DLL. the sample works fine. Now I want to know whether I have to always create a native code (C++) as DLL or whether I can have the native code (C++) as such, without creating a DLL.
    Thanks in advance,
    Karthik.G

    Joa, Thanks for your reply.
    My scenario is like this:
    There is already a native code in C++. This native code is in 2 platforms - Windows and Unix. Now, I need to write a JAVA code using JNI to communicate with the "existing C++ code". Since, I cannot change the "existing C++ code" directly, Im trying to build a "wrapper layer" in C++. So, my JAVA code will directly talk to the wrapper layer, and the wrapper layer will talk to the "existing C++ native code". Now my doubts are:
    1. Do I have to create "wrapper layer" as two different version of DLL's - one for UNIX and the other for Windows? (Since I have read that DLL creation process is different in Windows and UNIX).
    2. Any way of creating my "wrapper layer in C++" as a single implementation so that it can talk to both the version of native code(Window and Unix)
    Thanks in Advance,
    Karthik.G

  • Set path for native dll in NT

    Hi Javapeople,
    I have a signed applet which downloads a dll to the client machine for JNI access. I was wondering if there is a way to specify that the dll goes to some folder other than 'C:\WINNT\system32' and still have it accessible from my Java code?
    Thanking you in advance.

    so long as the dll is in a directory in your PATH, it will be found.

  • How can applet invoke native dll?

    Is it possible for an applet invoke native source?

    All in all it's not an especially practical idea.For Applets, I agree.
    However if you were to use JavaWebStart/JNLP, support for JNI shared objects is built into the protocol. You would still have to sign the application though.

  • Writing to STDOUT, then reading from STDIN?

    I have been researching this lately, as i've been programming 5 years and never had the opportunity to use it.
    The documentation on the official Java tutorial is pretty scarce, but it SEEMS like i should be able to write to STDOUT, then have it wait for me until i read from STDIN.
    I tried the following code:
    PrintStream os = System.out;
    System.setOut(os);
    InputStream is = System.in;
    System.setIn(is);
    os.write("I HOPE THIS WORKS!!!!!!!!!".getBytes());
    int available = is.available();
    byte BYTE[] = new byte[6]; //just trying to read the first 6 bytes, for the heck of it!
    is.read(BYTE);However, when i run the os.write method, the String just prints to the console. i thought my code was sufficient to reassign it and prevent it from being output there. what am i missing here?
    thanks!

    960093 wrote:
    but it SEEMS like i should be able to write to STDOUT, then have it wait for me until i read from STDIN. Correct.
    >
    I tried the following code:You however are missing the point that a stream has two ends. The streams you are grabbing do not let you control both ends (within java.)
    So you need to create a stream, rather than using an existing one.

  • Calling existing C++ dll from native code causes an ACCESS_VIOLATION

    Hi everyone,
    I'm having issues creating a Java app to call an existing c++ DLL. I've done extensive searching for a solution and found lots of goodies, but nothing to fix my problem yet.
    I've gone through the JNI tutorial and created my java class, used javah, and created my native code according to the tutorial.
    I'm new to dealing with DLLs so I'm not sure if there are some steps that I'm not taking.
    The issue comes when I run the program. I get an EXCEPTION_ACCESS_VIOLATION.
    the DLL I'm trying to call makes a call to a device on the USB port. I also have the source code and header files for the DLL but thought it would be easier to just have to deal with the already built DLL.
    After putting some print statements in the native function, the violation comes when I try to call the function in the external DLL. The DLL itself loads correctly (as far as I know).
    Here my native method that will load the external dll. I got the code to call the DLL method from:
    http://goff.nu/techarticles/development/cpp/calldll.html
    JNIEXPORT void JNICALL
    Java_OCPMControl_OCPMSetPixelCount (JNIEnv *env, jobject obj, jint pixelCount)
    //load the dll
    HINSTANCE ocpmSerialDLL = LoadLibrary("OCPMSerialDLL");
    /* get pointer to the function in the dll*/
    FARPROC myDLLFunction = GetProcAddress(HMODULE(ocpmSerialDLL), "OCPMSetPixelCount");
    /* Define the Function in the DLL for reuse. This is just prototyping
    * the dll's function. A mock of it. Use "stdcall" for maximum compatibility.
    typedef void (__stdcall * FUNC)(enum ePixelNum);
    FUNC MyFunction;
    MyFunction = FUNC(myDLLFunction);
    printf("Calling function\n");
    /* The actual call to the function contained in the dll */
    MyFunction(PIXEL256);
    /* Release the Dll */
    FreeLibrary(ocpmSerialDLL);
    When I run the program, I get the following error:
    An unexpected exception has been detected in native code outside the VM.
    Unexpected Signal : EXCEPTION_ACCESS_VIOLATION (0xc0000005) occurred at PC=0x182
    91E6B
    Function=[Unknown.]
    Library=C:\sun\MyJava\ocpm\src\OCPMSerialDLL.dll
    NOTE: We are unable to locate the function name symbol for the error
    just occurred. Please refer to release documentation for possible
    reason and solutions.
    Current Java thread:
    at OCPMControl.OCPMSetPixelCount(Native Method)
    at OCPMControl.getData(OCPMControl.java:167)
    at OCPMService.main(OCPMService.java:46)
    Dynamic libraries:
    0x00400000 - 0x00406000 c:\sun\j2sdk1.4.2_03\bin\java.exe
    0x77F80000 - 0x77FFD000 C:\WINNT\system32\ntdll.dll
    0x7C2D0000 - 0x7C332000 C:\WINNT\system32\ADVAPI32.dll
    0x7C570000 - 0x7C628000 C:\WINNT\system32\KERNEL32.DLL
    0x77D30000 - 0x77DA1000 C:\WINNT\system32\RPCRT4.DLL
    0x78000000 - 0x78045000 C:\WINNT\system32\MSVCRT.dll
    0x08000000 - 0x08138000 c:\sun\j2sdk1.4.2_03\jre\bin\client\jvm.dll
    0x77E10000 - 0x77E75000 C:\WINNT\system32\USER32.dll
    0x77F40000 - 0x77F7E000 C:\WINNT\system32\GDI32.DLL
    0x77570000 - 0x775A0000 C:\WINNT\system32\WINMM.dll
    0x10000000 - 0x10007000 c:\sun\j2sdk1.4.2_03\jre\bin\hpi.dll
    0x007C0000 - 0x007CE000 c:\sun\j2sdk1.4.2_03\jre\bin\verify.dll
    0x007D0000 - 0x007E9000 c:\sun\j2sdk1.4.2_03\jre\bin\java.dll
    0x007F0000 - 0x007FD000 c:\sun\j2sdk1.4.2_03\jre\bin\zip.dll
    0x18270000 - 0x1827E000 C:\sun\MyJava\ocpm\src\OCPMNative.dll
    0x18290000 - 0x182AA000 C:\sun\MyJava\ocpm\src\OCPMSerialDLL.dll
    0x68120000 - 0x681A1000 C:\sun\MyJava\ocpm\src\instrsup.dll
    0x76B30000 - 0x76B6E000 C:\WINNT\system32\comdlg32.dll
    0x70A70000 - 0x70AD5000 C:\WINNT\system32\SHLWAPI.DLL
    0x71710000 - 0x71794000 C:\WINNT\system32\COMCTL32.DLL
    0x782F0000 - 0x78538000 C:\WINNT\system32\SHELL32.DLL
    0x77920000 - 0x77943000 C:\WINNT\system32\imagehlp.dll
    0x72A00000 - 0x72A2D000 C:\WINNT\system32\DBGHELP.dll
    0x690A0000 - 0x690AB000 C:\WINNT\system32\PSAPI.DLL
    Heap at VM Abort:
    Heap
    def new generation total 576K, used 140K [0x10010000, 0x100b0000, 0x104f0000)
    eden space 512K, 27% used [0x10010000, 0x10033368, 0x10090000)
    from space 64K, 0% used [0x10090000, 0x10090000, 0x100a0000)
    to space 64K, 0% used [0x100a0000, 0x100a0000, 0x100b0000)
    tenured generation total 1408K, used 0K [0x104f0000, 0x10650000, 0x14010000)
    the space 1408K, 0% used [0x104f0000, 0x104f0000, 0x104f0200, 0x10650000)
    compacting perm gen total 4096K, used 1012K [0x14010000, 0x14410000, 0x1801000
    0)
    the space 4096K, 24% used [0x14010000, 0x1410d1f0, 0x1410d200, 0x14410000)
    Local Time = Wed May 12 10:53:56 2004
    Elapsed Time = 10
    # The exception above was detected in native code outside the VM
    # Java VM: Java HotSpot(TM) Client VM (1.4.2_03-b02 mixed mode)
    # An error report file has been saved as hs_err_pid2120.log.
    # Please refer to the file for further information.
    Is there something else I have to do to tell the JVM that the external DLL call isn't an Access Violation?
    Would it be easier to use the source files instead?
    Thanks to anyone who can help me out here!
    Scott Campbell

    Thanks,
    The problem has been solved. I wasn't linking the dll properly to access the external DLL and thus, my native DLL was looking for methods that it didn't know how to find. which was easily solved by adding a few options when creating my native dll.
    Here is the link I found to solve the problem incase anyone else has issues like this. It is regarding implicit v.s. explicit linking to external DLLs in using visual C++.
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/_core_link_an_executable_to_a_dll.asp
    Scott.

Maybe you are looking for