Invoking Java from C on Solaris

Hi!
I know, similar questions concerning this issue have been posted here before, but none of the answers helped me out.
I'm using Java 1.3 and cc (SC4.0 18 Oct 1995 C 4.0) on Solaris 2.6
I'm trying to compile and run the exact example from sun's web page to invoke a JVM from C. The code can be found here:(http://java.sun.com/docs/books/tutorial/native1.1/invoking/invo.html).
this is the make-command:
cc -I/jdk/1.3/include -I/jdk/1.3/include/solaris -L /jdk/1.3/jre/lib/sparc -L
/jdk/1.3/jre/lib -o invoke -ljava -ljvm -lthread -lc invoke.c
I can't avoid getting the follwing warnings:
"invoke.c", line 39: warning: argument #2 is incompatible with prototype:
prototype: pointer to pointer to void :
"/app/unido-inf/sun4_56/jdk/1.3/include/jni.h", line 1911
argument : pointer to pointer to pointer to const struct
JNINativeInterface_ {pointer to void reserved0, pointer to void reserved1,
poi...
and the compiled program crashes with a core dump (a very helpful error message!)
./invoke
Segmentation Fault (core dumped)
[status 139]
Has anyone ever managed to run this example program from Sun's site?
Is it the C-Compiler that matters here?
Any help would be greatly appreciated!!
Patrick.

This should be a version problem. JNI itself has versions like JDK, as the example is for JDK1.1, and JNI has been updated in JDK1.3 (I can't remember the version number, but they are different). And the invocation API and implementation has changed. So when you run the program, it ends up with incompitable data type and/or method signiture/prototype. Maybe you should try to use JDK1.1 or find a decent tutorial about JDK1.3's invoke API.

Similar Messages

  • Invoking Java from C and capturing System.out

    Hi,
    I know very little about C but have a question related to invoking a Java process from C. Perhaps someone can help me.
    I've been looking at the example at http://java.sun.com/docs/books/jni/html/invoke.html and seen how to invoke my Java program with:
    (*env)->CallStaticVoidMethod(env, cls, mid, args);
    in their example the Java program prints one line to System out with:
    System.out.println("Hello World " + args[0]);
    and says running the program produces:
    Hello World from C!
    What I want to know is, how in the C program can I capture the output the Java program sends to System.out, as I want to do something with the output other than have it print into the console.
    Hope that makes sense.

    I'm not totally clear on your question but I'll take a stab.
    It seems to me like you are trying to get the output from a java program into a C program. If this is the case then there are many ways to do this - many of which are more simple that using JNI. However, if you absolutely must use JNI for this application then I suggest you take some more time to learn about C and JNI as I imagine this sort of thing is non-trivial and will required a level of understanding of C that you currently don't have. You may also want to cross-post onto the JNI forum.
    If you can do this without using JNI then I'd suggest doing the standard fork/exec/pipe routine. This means, that in your C program you will call the functions fork (to create a new process that is subordinate to the currently running one), exec (in the subprocess which will replace the current program image in memory with that of another program you wish to execute, in this case, a JVM with a running application), and popen (which creates a "pipe" between the standard output of the Java program [System.out] and some input stream in the C program).
    Finding an example of a program that does this fork/exec/pipe pattern on the web shouldn't be too hard. Hope this helps.
    -mike

  • Invoke Java from Insert trigger in Oracle 9i

    Hi,
    I want to invoke a java app with trigger once a row is inserted into orcle table. I've a trigger on insert but insert statement does not insert data to table until commit is executed.
    Trigger is not allowed on commit. How can I solve this problem?
    Thanks.

    navi01 wrote:
    I've found the solution at Oracle forum. I need tthe following and it works.
    trigger --> submit job
    commit --> job will run --> job calls java
    Job starts running or job completes? Because the second is going to make that table useless for anything but a jobs table and if you have a jobs table you might as well have a jobs server.

  • Invoking java methods from C/C++ on the machine with different JREs

    I implemented Windows NT Service instantiating JVM and invoking several java methods. Everything works but I have an issue with running the service on the machine where multiple different versions of JRE have been installed. The service is calling java methods that require JRE 1.3 or later so I wrote the code that is setting system PATH from within the service based on the configuration stored in the external file. The problem is that the service requires jvm.dll to be in the PATH prior lunching it since this library is instantiated through the implicit linking. When I put jvm.dll in the same path as the service binary I can lunch it but JNI_CreateJavaVM fails and returns -1. This happens even if JRE 1.3 is in the system PATH prior lunching the service.
    Everything works if the system PATH contains references to JRE 1.3 and jvm.dll is removed from the service's directory.
    I am looking for an advice on what is the proper way to deal with invoking java methods from the C/C++ executable in the environment with different versions of JRE.
    Thanks, Kris.

    Here's a way I have done what you are asking about:
    What you want to do is make all of your linking happen at runtime, rather than at compile time. This way, you can edit the PATH variable before the jvm.dll gets loaded.
    Following is some code that I used to handle a dll of my own in this manner. You can decide if you want to write a "wrapper" dll, or if you find it simpler to approach the jvm.dll in this way.
    // Define pointer type for DLL entry point.
         typedef void JREPDLL_API (*EXECUTEREQUEST)(char*, Arguments&);
    // Set up path, load dll, and pass everything off to it.
    HINSTANCE javaServer = javaServer = LoadLibrary("jrepdll.dll");
    if (javaServer != NULL) {
    EXECUTEREQUEST executeRequest = (EXECUTEREQUEST)GetProcAddress(javaServer, "ExecuteRequest");
    if (executeRequest != NULL) {
    if (argc == 1)
         // Execute the request.
         executeRequest("-run", args);
    else
         // Execute the request.
         executeRequest("-console", args);
    Here's some code for how to edit the PATH:
              // Edit the PATH environment variable so that we use our private java.
    char *appendPt;
    char *newPath;
    char *path;
              char tmp[_MAX_PATH];
              // Get the current PATH variable setting.
    path = getenv("PATH");
              // Allocate space for an edited path setting.
              if (path != NULL)
                   newPath = (char*)malloc((_MAX_PATH * 2) + strlen(path));
              else
                   newPath = (char*)malloc((_MAX_PATH * 2));
              // Get upper part of path to desired directories.
              strcpy(tmp, filepath);
              appendPt = strstr(tmp, "dbin\\jreplicator");
              appendPt[0] = '\0';
    sprintf(newPath, "PATH=%sjava\\jre1.2.2\\bin;%sjava\\jre1.2.2\\bin\\classic", tmp, tmp);
    // Append the value of the existing PATH environment variable.
    // If there is anything, append it.
    if (path != NULL) {
         strcat(newPath, ";");
         strncat(newPath, path, (sizeof(newPath) - strlen(newPath) - 2));
    // Set new PATH value.
    _putenv(newPath);
              free(newPath);

  • Invoking "java myClass" using Runtime.Exec from a Java Stored Procedure

    Hi All,
    This is regarding the use of Runtime.getRunTime().exec, from a java programme (a Java Stored Procedure), to invoke another Java Class in command prompt.
    I have read many threads here where people have been successuful in invoking OS calls, like any .exe file or batch file etc, from withing Java using the Runtime object.
    Even i have tried a sample java programme from where i can invoke notepad.exe.
    But i want to invoke another command prompt and run a java class, basically in this format:
    {"cmd.exe","java myClass"}.
    When i run my java programme (in command prompt), it doesnt invoke another command prompt...it just stays hanging.
    When i run the java programme from my IDE, VisualCafe, it does open up a command prompt, but doesnt get the second command "java myCLass".
    Infact on the title of the command prompt (the blue frame), shows the path of the java.exe of the Visual Cafe.
    and anyway, it doesnt run my java class, that i have specified inside the programme.
    Even if i try to run a JAR file, it still doesnt do anything.
    (the JAR file other wise runs fine when i manually invoke it from the command prompt).
    Well, my question is, actually i want to do this from a Java Stored Procedure inside oracle 8.1.7.
    My feeling is, since the Java Stored Procedure wont be running from the command prompt (i will be actually invoking it through a Oracle trigger), it may be able to invoke the command prompt and run the java class i want. and that java class has to run with the SUn's Java, not Oracle JAva.
    Does any one have any idea about it?
    Has anyone ever invoked a java class or JAR file in command prompt from another Java Programme?
    YOur help will be highly appreciated.
    (P:S- Right now, my database is being upgraded, so i havent actually been able to create a Java Stored procedure and test it. But i have tested from a normal java programme running in command prompt and also from Visual Cafe).
    Thanks in advance.
    -- Subhasree.

    Hello Hari,
    Thanks for your quick reply.
    Can you please elaborate a little more on exactly how you did? may be just copy an dpaste taht part of teh code here?
    Thanks a lot in advance.
    --Subhasree                                                                                                                                                                                                                                                                                                                                                                                                           

  • No Class Found Error on invoking java class from PL/SQL

    Hi There,
    I have followed instructions on how to create a java proc in the DB to invoke it from PL/SQL.
    I get a 'java.lang.NoClassDefFoundError' error because it cannot access 'org.apache.axis.description.TypeDesc' in this case. The instuctions say to add the supporting jars which contain the additional classes to the project's Additional Classpath's which I have done.
    I deploy the java classes and create the java stored proc using JDev.
    Can someone please tell me how to go about resolving this?
    I can see 'org.apache.axis.description.TypeDesc' in the DB via JDev's Databse connection in the Java Classes tree?
    Thanks,
    Anthony

    Hi There,
    I have followed instructions on how to create a java proc in the DB to invoke it from PL/SQL.
    I get a 'java.lang.NoClassDefFoundError' error because it cannot access 'org.apache.axis.description.TypeDesc' in this case. The instuctions say to add the supporting jars which contain the additional classes to the project's Additional Classpath's which I have done.
    I deploy the java classes and create the java stored proc using JDev.
    Can someone please tell me how to go about resolving this?
    I can see 'org.apache.axis.description.TypeDesc' in the DB via JDev's Databse connection in the Java Classes tree?
    Thanks,
    Anthony

  • How to invoke Web Service in JAVA from CRM 5.0

    Hi.
    I created a Web Service in JAVA. Now I want to invoke it from CRM 5.0
    in ABAP. How to do it? Could someone give me detail step in step?
    Thanks in advance!

    check this weblog by Thomas Jung
    /people/thomas.jung3/blog/2004/11/17/bsp-a-developers-journal-part-xiv--consuming-webservices-with-abap
    Raja

  • How to invoke java application from ABAP

    How to invoke java application from ABAP  ? Suppose I needto execute a EJB wihic is running on my SAP J2EE Enigne from an ABAP Program .
    Thanks,
    Manish

    Hi Manish,
    did you get some further documents concerning "abap program calls ejb"?
    If yes, could you please send me some informations.
    Thank you for your help.
    Kind regards, Patrick.

  • How to invoke Matlab from Java

    Hi, I want to pass some data generated from Java class to Matlab, then invoke Matlab from Java to run the computation program (file written in Matlab, myfile.m). I know Matlab can use classes generated from Java, how to drive Matlab from Java?
    I appreciate your help!
    yaya

    According to their documentation, you can't. Having said that, again according to their documentation, there are plans to support this in future releases.
    m

  • Invoke Java Library from Flex

    I have Flex running on Tomcat with LCDS. On tomcat there is a JAR that has classes I'd like to use/interact with from Flex. In the simple LCDS examples they demonstrate having a Product.java class and a matching Product.as class, but the java library I am trying to use has many more classes and would take a long time to copy into Actionscript.
    What is the best way to interact with the Java classes (I don't have a web service to use like in the LCDS example).

    I only know we can use JNI to invoke native libraries
    from Java and I have never used JNI to invoke Java
    libraries from native applications (C/C++ programs).
    I am going to look through the tutorial you
    recommended.The last tutorial. I've only fiddled with it, as it was a bitch. If you don't need to use Suns JVM, I recomend using CNI & GCJ [ http://gcc.gnu.org/java/ ], as it is much neater.
    Do you mean JNI is internally implemented by C++s
    Runtime.exec method?Write a small Java application which invokes the lib you want, i.e. say you want to use Strings replaceAll method (simple example I know)
    class Test {
    pubilc static void main( String args[] ) {
      System.out.println( args[0].replaceAll( args[1], args[2] ) ) ;
    }Then use c++ program to run "/path/to/java Test tast a e" .

  • Invoke the secured webservice from BPEL in Solaris environment

    Hi All,
    Can any one tell me how to invoke the secured webservice from BPEL in Solaris environment as i am able to invoke the secured web service from BPEL in windows platform(soa suite 10.1.3.4).
    we have applied 10.1.3.4 patch on solaris environment but we are not able to invoke the same.
    Thanks in advance
    Regards,
    Nagaraju .D

    Hi Nagaraju,
    Read your post.We've somewhat the similar problem as yours as we are facing some error while invoking a WS-Security secured web service from our BPEL Process on the windows platform(SOA 10.1.3.3.0).
    For the BPEL process we are following the same steps as given in an AMIS blog : - [http://technology.amis.nl/blog/1607/how-to-call-a-ws-security-secured-web-service-from-oracle-bpel]
    but sttill,after deploying it and passing values in it,we are getting the following error on the console :-
    “Header [http://schemas.xmlsoap.org/ws/2004/08/addressing:Action] for ultimate recipient is required but not present in the message”
    As you have wriiten that you've already called a secured web service in windows platform ,so if you can please help me out in this issue.
    I've opened a separate thread for this to avoid confusion. :-
    Error while invoking a WS-Security secured web service from Oracle BPEL..
    Thanks,
    Saurabh

  • Invoke Java library from C/C++

    Hello everyone,
    Are there any approaches to invoke Java libraries from C/C++?
    Thanks in advance,
    George

    I only know we can use JNI to invoke native libraries
    from Java and I have never used JNI to invoke Java
    libraries from native applications (C/C++ programs).
    I am going to look through the tutorial you
    recommended.The last tutorial. I've only fiddled with it, as it was a bitch. If you don't need to use Suns JVM, I recomend using CNI & GCJ [ http://gcc.gnu.org/java/ ], as it is much neater.
    Do you mean JNI is internally implemented by C++s
    Runtime.exec method?Write a small Java application which invokes the lib you want, i.e. say you want to use Strings replaceAll method (simple example I know)
    class Test {
    pubilc static void main( String args[] ) {
      System.out.println( args[0].replaceAll( args[1], args[2] ) ) ;
    }Then use c++ program to run "/path/to/java Test tast a e" .

  • Invoke BPEL from Java for 11g

    I searched the forum and here's the code for 10g
    Trying to Invoke BPEL from JAVA
    I'm using 11g, do you know if the way to invoke BPEL is the same as 10g? If not, do you know what the differences are?
    Thanks,
    Andy

    I got the below errors when I try to call a composite in 11g. I wrote it in a simple java program and run it within jdeveloper. I'm using the adf binding. When I passed in an empty NormalizedMessage object then it worked fine. But when I passed in the payload data then I got the errors below. It did create an instance on my soa server but the instance did not call the pbel process. Do you have any ideas?
    StringBuffer inputPayload = new StringBuffer();
    inputPayload.append("<ns1:process xmlns:ns1=\"http://xmlns.oracle.com/BPELScheduler/LineItemProcessEventList\">");
    inputPayload.append("<ns1:input>test</ns1:input>");
    inputPayload.append("</ns1:process>");
    Locator locator = LocatorFactory.createLocator(jndiProps);
    Composite composite = locator.lookupComposite("default/BPELScheduler!1.0");
    Service service = composite.getService("lineitemprocesseventlist_client_ep_java");
    NormalizedMessage input = new NormalizedMessageImpl();
    input.getPayload().put("payload",inputPayload);
    service.post("process",input);
    ============ ERROR ========================================
    oracle.fabric.common.FabricInvocationException: java.rmi.RemoteException: EJB Exception: ; nested exception is:
         java.lang.RuntimeException: oracle.fabric.common.FabricInvocationException
         at oracle.soa.management.internal.facade.ServiceImpl.post(ServiceImpl.java:106)
         at com.masyc.scheduler.BPELDriver.callBpel(BPELDriver.java:54)
         at com.masyc.scheduler.BPELDriver.main(BPELDriver.java:24)
    Caused by: java.rmi.RemoteException: EJB Exception: ; nested exception is:
         java.lang.RuntimeException: oracle.fabric.common.FabricInvocationException
         at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:234)
         at weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:223)
         at oracle.soa.management.internal.ejb.impl.FacadeFinderBean_4vacyo_FacadeFinderBeanImpl_1031_WLStub.executeServiceMethod(Unknown Source)
         at oracle.soa.management.internal.ejb.EJBLocatorImpl.executeServiceMethod(EJBLocatorImpl.java:875)
         at oracle.soa.management.internal.facade.ServiceImpl.post(ServiceImpl.java:98)
         ... 2 more
    Caused by: java.lang.RuntimeException: oracle.fabric.common.FabricInvocationException
         at oracle.soa.management.internal.ejb.impl.FacadeFinderBeanImpl.executeServiceMethod(FacadeFinderBeanImpl.java:866)
         at sun.reflect.GeneratedMethodAccessor2796.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
         at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
         at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
         at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
         at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
         at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
         at com.bea.core.repackaged.springframework.jee.spi.MethodInvocationVisitorImpl.visit(MethodInvocationVisitorImpl.java:37)
         at weblogic.ejb.container.injection.EnvironmentInterceptorCallbackImpl.callback(EnvironmentInterceptorCallbackImpl.java:54)
         at com.bea.core.repackaged.springframework.jee.spi.EnvironmentInterceptor.invoke(EnvironmentInterceptor.java:50)
         at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
         at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
         at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
         at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
         at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
         at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
         at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
         at $Proxy238.executeServiceMethod(Unknown Source)
         at oracle.soa.management.internal.ejb.impl.FacadeFinderBean_4vacyo_FacadeFinderBeanImpl.executeServiceMethod(FacadeFinderBean_4vacyo_FacadeFinderBeanImpl.java:1610)
         at oracle.soa.management.internal.ejb.impl.FacadeFinderBean_4vacyo_FacadeFinderBeanImpl_WLSkel.invoke(Unknown Source)
         at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:589)
         at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:477)
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
         at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
         at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:473)
         at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
    Caused by: oracle.fabric.common.FabricInvocationException
         at oracle.fabric.CubeServiceEngine.post(CubeServiceEngine.java:538)
         at oracle.integration.platform.blocks.mesh.AsynchronousMessageHandler.doPost(AsynchronousMessageHandler.java:142)
         at oracle.integration.platform.blocks.mesh.MessageRouter.post(MessageRouter.java:194)
         at oracle.integration.platform.blocks.mesh.MeshImpl.post(MeshImpl.java:204)
         at sun.reflect.GeneratedMethodAccessor1043.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:296)
         at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:177)
         at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
         at oracle.integration.platform.metrics.PhaseEventAspect.invoke(PhaseEventAspect.java:59)
         at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
         at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
         at $Proxy195.post(Unknown Source)
         at oracle.integration.platform.blocks.sdox.JavaEntryBindingComponent.post(JavaEntryBindingComponent.java:250)
         at oracle.soa.management.internal.ejb.impl.FacadeFinderBeanImpl.executeServiceMethod(FacadeFinderBeanImpl.java:864)
         ... 30 more
    Edited by: user8742475 on Nov 10, 2009 1:39 PM

  • Invoking Java Applet from SAP Netweaver Eportal using java webdynpro

    Hi ,
    We are using SAP Netweaver portal version 7.0.WE want to invoke java applet into webdynpro java application on button click.
    The Applet should open in a new window when the particular parameter is selected and the button is clicked
    The code is given below:
    String html = "<HTML> <HEAD></HEAD> <BODY><APPLET code=\"org.faceless.pdf2.viewer2.PDFViewerApplet\" type=\"application/x-java-applet;version=1.4.2_05\" archive=\"bfopdf.jar\" width=800 height=600></APPLET></BODY></HTML>";
    IWDCachedWebResource resource = WDWebResource.getWebResource(html.getBytes("UTF-8"), WDWebResourceType.HTML);
    resource.setResourceName("HTML_inline.html");
    IWDWindow window = wdComponentAPI.getWindowManager().createNonModalExternalWindow(resource.getAbsoluteURL(),"Image");
    window.removeWindowFeature(WDWindowFeature.TOOL_BAR);
    window.removeWindowFeature(WDWindowFeature.ADDRESS_BAR);
    window.removeWindowFeature(WDWindowFeature.STATUS_BAR);
    window.open();
    But after clicking on button new html window is opening and the applet is not showing properly. The java console showing the error:
    java.lang.ClassFormatError: Truncated class file
         at java.lang.ClassLoader.defineClass1(Native Method)
         at java.lang.ClassLoader.defineClassCond(Unknown Source)
         at java.lang.ClassLoader.defineClass(Unknown Source)
         at java.security.SecureClassLoader.defineClass(Unknown Source)
         at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
         at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
         at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
         at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(Unknown Source)
         at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
         at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
         at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
         at java.lang.Thread.run(Unknown Source)
    Exception: java.lang.ClassFormatError: Truncated class file
    Please suggest how to solve this error.
    Regards,
    Dhruba

    Hi,
    I'm not sure, but I believe the 'code' argument should end with '.class'. However, your implementation of displaying a Java applet seems ok, the error is within the applet's Jar file
    Anyway, have a look at http://download.oracle.com/javase/1,5.0/docs/guide/plugin/developer_guide/using_tags.html#applet and http://www.w3.org/TR/html401/struct/objects.html#h-13.4 on how to use the <applet> tag
    As a test, you could try and create a local HTML document on your local desktop, including the applet. I would suspect you will receive the same error in your Java console
    I believe the only option is to recompile your Java applet (if possible at all) against a newer JDK (1.4 and up)

  • ResourceBundle throws MissingResourceException when calling Java from C

    All,
    Our code calls Java from C application.
    The C code create JVM using JNI_CreateJavaVM. Due to internal design issues we don't
    create the JVM with a "-classpath" option.
    After creating the JVM, we create a ClassLoader (URLClassLoader), with a URL list as it's classpath.
    The last step in the C code is to load a Java class using the C reference to URLClassLoader.loadClass
    (I will refer to this class as classA), and than call one of it's static methods.
    Please notice that classA is not instantiated, we call a static method.
    At this point we are moving to the Java code...
    In the Java static method we call ResourceBundle.getBundle("resources.messages"),
    the result is ResourceBundle throws MissingResourceException.
    - The JAR hosting "resources/messeges.properties" (refer as jarA) is include in the
    ClassLoader URL paths we used for loading the Java class.
    - Using a debugger we can see that ClassLoader.getSystemClassLoader() don't contain
    jarA in it's URL list.
    - Using the debugger we see that classA.class.getClassLoader() does contain
    jarA in it's URL list.
    After some investigation we see that ResourceBundle.getBundle calles to ResourceBundle.getLoader:
    private static ClassLoader getLoader() {
            Class[] stack = getClassContext();
            /* Magic number 2 identifies our caller's caller */
            Class c = stack[2];
            ClassLoader cl = (c == null) ? null : c.getClassLoader();
            if (cl == null) {
                cl = ClassLoader.getSystemClassLoader();
            return cl;
        } getClassContext() - native method, this can explain the why the above work fine for Windows.
    I suspect the problem raised in the above code. Since I couldn't get a debug
    version of rt.jar for Solaris, I need some help.
    Our environment is Solaris 8, Java 1.5.
    Please note that the same code works fine on WindowsXP with the same Java version!
    Thanks,
    Avi

    I was thinking JVM should the classpath when it is invoked. But obviously it is not and we need to assign the classpath ourselves when invoking from native side. Thanks for pointing that out. For other people's benefit the following is the code piece I for initializing JVM.
    char* str1;
              char* str2;
              char* classpath;
              str1 = "-Djava.class.path=";
              str2 = std::getenv("CLASSPATH");
              classpath = (char*)malloc(strlen(str1) + strlen(str2) + 1);
              strcpy(classpath, str1);
              strcat(classpath, str2);
              if (str2 == NULL)     {
                   printf("CLASSPATH environment variable is not defined.");
                   exit(1);
              m_VmArgs.version = JNI_VERSION_1_4;
              m_options[0].optionString= classpath;
              m_VmArgs.options = m_options;
              m_VmArgs.nOptions = 1;
              m_VmArgs.ignoreUnrecognized = JNI_TRUE;
              JNI_GetDefaultJavaVMInitArgs(&m_VmArgs);
              /* Create the Java VM */
              m_Res = JNI_CreateJavaVM(&m_Jvm, (void**)&m_Env, &m_VmArgs);
              if (m_Res < 0) {
                   printf("Can't create JVM\n");
                   exit(1);
    thanks,
    chancellor

Maybe you are looking for