Calling C++ method from Java program on Linux

I'm trying to get set up to call a C++ method from a Java app on a SUSE Linux box. I follow the steps of the "Hello World" baby example in Beth Stearns's tutorial, "Integrating Native Code and Java Programs", but I get the following error message:
Exception in thread "main" java.lang.UnsatisfiedLinkError: /users/dmizell/testIF/libhello.so: /users/dmizell/testIF/libhello.so: invalid ELF header (Possible cause: endianness mismatch)
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1778)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1703)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1028)
at HelloWorld.<clinit>(HW.java:7)
at Main.main(Main.java:5)
Any idea what I might be doing wrong?
thanks
David

Your library is compiled in a way which is incompatible with the VM you are using.
Note that there is a JNI forum.

Similar Messages

  • How to Call C++ Method from Java

    I need to call C++ method from Java.
    I have gone through the JNI tuorial , but was not able to pin point things.
    I read that :
    You have to write JNI c functions which then call your C++ member functions.You need to write a JNI function which will call new on your C++ class.
    Now i have java class :
    Java Code JavaClass.java ---->
    class JavaClass{
    public native void nativeMethod();
        static
            System.loadLibrary("NativeCppCode");
         private void callCppMethod()
              //call C++ method
                    JavaClass jvc = new JavaClass();
                    jvc.nativeMethod()
    }Cpp Code:
    NativeCppCode.h---->
    class NativeCppCode
    public:
        getValue();
        setValue();
    private:
       int a;
    JNIEXPORT void JNICALL Java_JavaClass_nativeMethod(JNIEnv *env
                   ,jobject obj);NativeCppCode.C---->
    NativeCppCode::getValue()
       return a;
    NativeCppCode::setValue()
       a = 1;
    JNIEXPORT void JNICALL Java_JavaClass_nativeMethod(JNIEnv *env
                   ,jobject obj)
    NativeCppCode* nativeInstabce = new NativeCppCode();
    NativeCppCode.setValue();
    }Is this the correct way to do it.
    Any suggestion would be a great help to me

    tryit wrote:
    I need to call C++ method from Java.Not possible.
    JNI uses C methods.
    Is this the correct way to do it.Same way you would do it in any C/C++ method (not java)
           MyClass* p = ....
           p->doit();
    Common idiom for the pointer in the above is to pass it back and forth to your java code as a java long. You cast it it and from your class pointer. Provide an explicit java method to free it when done. Besides providing the explicit method also implement a finalizer to free it as well (however that is a fail safe and should not be relied upon.)

  • How to Call .XDO file From Java Program

    Hi,
    I have developed a report in using BI Publisher version 10.1.3.
    I created the report and it only created XDO files. If I want to call XDO file from Java program how I can do that.
    What are the APIs available to do that.
    Thanks
    -Ashutosh

    Hi,
    the JavaAPI didn't work with the xdo-Files. But you can create a proxy stub for the Web Service API of BI Publisher which uses the xdo's in the repository.
    regards
    Rainer

  • Calling javascript method from java

    Hi this is sri,
    I have one doubt on Java Applets "how to call the javascript method from java Applet".Can u give me the complete sample code for one program(both java applet file and html file also)because i can easily understand the programming flow.
    Thanks ,
    Srilekha.

    It's an extremely important skill to learn how to search the web. Not only will it increase your research and development talents, it will also save you from asking questions that have already been answered numerous times before. By doing a little research before you ask a question, you'll show that you're willing to work and learn without needing to have your hand held the entire time; a quality that is seemingly rare but much appreciated by the volunteers who are willing to help you.
    If you've done the research, found nothing useful, and decide to post your question, it's a great idea to tell us that you've already searched (and what methodologies you used to do your research). That way, we don't refer you back to something you've already seen.
    To get you started, here's a link...
    http://www.google.com/search?q=call+java+from+javascript

  • Calling javaFX script from Java program

    I am trying to call JavaFX script from a simple Java program. code as follows:
    import java.io.*;
    import javax.script.ScriptEngine;
    import javax.script.ScriptEngineManager;
    public class My{
    public static void main(String[] args) {
    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByExtension("fx");
    try {  
    InputStreamReader reader = new InputStreamReader(My.class.getResourceAsStream("first.fx"));
    engine.eval(reader);
    reader.close();
    } catch (Exception e) {
    e.printStackTrace();
    my first.fx file code is here:
    import javafx.stage.Stage;
    import javafx.scene.Scene;
    import javafx.scene.text.Text;
    import javafx.scene.text.Font;
    import javafx.scene.text.TextAlignment;
    Stage {
    title: "My First JavaFX Sphere"
    scene: Scene {
    width: 250
    height: 250
    content: [
    Text {
    font: Font { size: 24 }
    x: 20, y: 90
    textAlignment: TextAlignment.CENTER
    content:"Welcome to \nJavaFX World"
    } //Text
    ] // content
    } // Scene
    } // Stage
    I am not able to run My.java. runtime error as follows:
    java.lang.NullpointerException
    Kindly correct me, where I am wrong

    I am able to call .fx file from Java. Thank you all for helping me to resolve this problem
    Regards,
    Ritu

  • Calling c method from java

    Hi,
    I am new to JNI. I want to call a C function from java, where my C function name is
    UINT8 abc(UINT8 feature, UINT8* in_value, UINT32 serialNo, UINT8 * out_value)
    where,
    typedef unsigned char UINT8;
    typedef unsigned int UINT32;
    My question is what should be the prototype defination in java and what has to be changed in C code to make it work?

    After adding the native keyword to your Java method, compile with javac and run javah on the class name. For example:
    package my.stuff;
    public class MyClass
       public native void myMethod(char param1, int param2);
    }javac ./my/stuff/MyClass.java
    javah my.stuff.MyClass
    This generates my_stuff_MyClass.h, which has the function prototype for your method. Inside the implementation of the function, you can call your C function.
    Here is the contents for my_stuff_MyClass.h:
    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include <jni.h>
    /* Header for class my_stuff_MyClass */
    #ifndef _Included_my_stuff_MyClass
    #define _Included_my_stuff_MyClass
    #ifdef __cplusplus
    extern "C" {
    #endif
    * Class:     my_stuff_MyClass
    * Method:    myMethod
    * Signature: (CI)V
    JNIEXPORT void JNICALL Java_my_stuff_MyClass_myMethod
      (JNIEnv *, jobject, jchar, jint);
    #ifdef __cplusplus
    #endif
    #endif

  • Calling batch file from java Program

    I have made the java program in which i have called the batch file.But the problem is this that when i call batch file locally it executes normally but when i try to execute batcvh file from remote machine it doesn't runrather it gives Runtime IO execption.Error123.Can anyone provide me the solution for this?

    Not without a lot more information. Like for example how you are trying to execute this remote batch file, the code you are using to do that, what kind of server you have no the remote machine to let you remotely execute code, and so on.

  • Calling FND_VAULT.get from Java program

    Hi,
    I am creating a Java Concurrent Program in EBS and from my Java program I want to invoke "FND_VAULT.get" procedure.
    Can someone please guide me on how to do that.
    Thanks

    Actually I am having 4 Shell Scripts which I want to
    call at a time.
    1)run_graph.sh
    2)run_report.sh
    3)web_report.sh
    4)mktg_report.sh
    Now I want to call all the four from a Java Program at
    the same timeWell... if you truly want to run them at the same time, you'll need to look into multithreading.
    What I suspect you really want is to run them in the above order within the same Java program.
    String pathToScripts = "/etc/path/to/your/scripts/";
    String[] scripts = {"run_graph.sh", "run_report.sh", "web_report.sh", "mktg_report.sh"};
    Process p = null;
    for (int i=0; i<scripts.length; i++){
        p = Runtime.getRuntime().exec(pathToScripts + scripts);
    p.waitFor();
    System.out.println(scripts[i] + " completed with exit code " + p.exitValue());
    If you want to capture output or send input for the above processes, see the java.lang.Process and java.lang.Runtime API docs:
    http://java.sun.com/j2se/1.3/docs/api/java/lang/Runtime.html
    http://java.sun.com/j2se/1.3/docs/api/java/lang/Process.html
    Hope this helps,
    -Scott

  • Call Javascript methods from Java methods

    Dear All,
    I have a requirement where I need to invoke Javascript methods from a Java file located in the same machine. Are there any possible solutions for this?
    Regards,
    Alok

    Hi,
    Thanks for all your replies. Does this work on Java 5 too? Could you please share the complete code snippet which makes it work? I tried working on yours but no success.
    Regards,
    Alok

  • How to call stored procedures from java program?

    I have tried to run a program that calls a stored procedure on MySQL
    server version 5.0.17 by using connector/j 5.0, but it always fails on the
    statement: con.preparecall() ,
    have looked on the internet and found out that people can all mysql
    stored procedure all right in their programs, really dont know what's
    wrong with this small peiece of code:
    import java.sql.*;
    public class TestDB {
          // procedure being called is:
         CREATE PROCEDURE `dbsaystorm`.`getsite` ()
         BEGIN
            select  name  from tblsite;
         END
         public static void main(String[] args) {
              try  {
                  //Class.forName("org.gjt.mm.mysql.Driver");
                  Class.forName("com.mysql.jdbc.Driver");
                  Connection con = DriverManager.getConnection("jdbc:mysql://localhost/dbname",
                            "user", "pwd");
           * executing SQL statement here gives perfect correct results:
            // PreparedStatement ps = con.prepareStatement("select name from tblsite");      
            // ResultSet rs =ps.executeQuery();
                  // but in stored procedure way...
                  //it fails here on this prepare call statement:             
                  CallableStatement proc = con.prepareCall("call getsite()");
                  ResultSet rs =proc.executeQuery();                      
                  if (rs == null) return;                                      
                  while (rs.next()){                 
                      System.out.println("site name is: "+ rs.getString(1));                                
                  rs.close();
              } catch (SQLException e) {e.printStackTrace();}
               catch (Exception e) {e.printStackTrace();}         
    }it always gives this exception:
    java.lang.NullPointerException
         at com.mysql.jdbc.StringUtils.indexOfIgnoreCaseRespectQuotes(StringUtils.java:959)
         at com.mysql.jdbc.DatabaseMetaData.getCallStmtParameterTypes(DatabaseMetaData.java:1280)
         at com.mysql.jdbc.DatabaseMetaData.getProcedureColumns(DatabaseMetaData.java:3668)
         at com.mysql.jdbc.CallableStatement.determineParameterTypes(CallableStatement.java:638)
         at com.mysql.jdbc.CallableStatement.<init>(CallableStatement.java:453)
         at com.mysql.jdbc.Connection.parseCallableStatement(Connection.java:4365)
         at com.mysql.jdbc.Connection.prepareCall(Connection.java:4439)
         at com.mysql.jdbc.Connection.prepareCall(Connection.java:4413)
         at saystorm.server.data.database.TestDB.main(TestDB.java:29)
    where have I gone wrong?
    when I commented out the statement that makes the procedure call and call preparedstatement to execute SQL select statement, it gave perfectly correct result.
    it looks like there is no problem with java prog accessing MYSQL server database, but the it seems that it's just java can't call stored procedure stored on the mysql server version 5.
    can it or can't it? if it can, how is that accomplished?

    It is a bug in the driver because it shouldn't be
    returning that exception (null pointer) even if you
    are doing something wrong.
    Are you using the latest version of the driver?
    The stored procedure runs when you run it from the
    gui/command line using a MySQL tool - correct?
    As suggested you should be using the brackets. What
    is the data type of the 'name' field?
    You could try returning another value like one of the
    following
    select 1, name from tblsite;
    select name, 1 from tblsite;
    That might get around the bug
    Additionally try just the following...
    select 'test' from tblsite;yes, the driver used is in connector/j 5.0--the lastest one, and the
    procedure can run correctedly at either command line or GUI mode
    with no problem whatsoever, the returned data type is string type,
    I have not got the chance to test it again with those values you
    suggested, as I have abandoned the laptop I used to write that code
    initately. There have been some other really weird cases happened on
    that computer. I guess that must be something wrong with the JVM
    installed on it, it was upgraded from jre5.0.04 to 06, and to 09.
    something within hte JVM must have been messed up(the only reasonable
    explanation). Because the same code runs correctly on my new laptop,
    using the same environment: jvm 5.0_09, mysql 5.0.18, connector/J 5.0.
    that old laptop really was a nightmare.

  • Error while calling the BPEL from java program

    Hello All,
    I am tring to call the Synchronous BPEL process from the following code:
    package callbpelfromjava;
    import com.oracle.bpel.client.Locator;
    import com.oracle.bpel.client.NormalizedMessage;
    import com.oracle.bpel.client.delivery.IDeliveryService;
    import java.util.Map;
    import java.util.Properties;
    import oracle.xml.parser.v2.XMLElement;
    public class BPELCaller {
    public static void main(String args[]){
    String input = "krrish";
    String xmlInput= "<ns1:AccessDBBPELProcessRequest xmlns:ns1=\"http://xmlns.oracle.com/AccessDBBPEL\"><ns1:input>"+input+"</ns1:input></ns1:AccessDBBPELProcessRequest>";
    try{        
    Properties props=new Properties();
    props.setProperty("orabpel.platform","ias_10g");
    props.setProperty("java.naming.factory.initial","com.evermind.server.rmi.RMIInitialContextFactory");
    props.setProperty("java.naming.provider.url","opmn:ormi://192.168.137.40:6004/home/orabpel");
    props.setProperty("java.naming.security.principal","oc4jadmin");
    props.setProperty("java.naming.security.credentials","welcome1");
    props.setProperty("dedicated.rmicontext", "true");
    Locator locator = new Locator("default", "bpel", props);
    System.out.println("After creating the locator object......");
    IDeliveryService deliveryService =(IDeliveryService)locator.lookupService(IDeliveryService.SERVICE_NAME);
    System.out.println("Befor creating the NormalizedMessage object......");
    NormalizedMessage nm = new NormalizedMessage();
    System.out.println("After creating the NormalizedMessage object.*.*.*...");
    nm.addPart("payload", xmlInput);
    System.out.println("Before creating response object......");
    NormalizedMessage res = deliveryService.request("AccessDBBPEL", "process", nm);
    System.out.println("After calling the AccessDBBPEL .*.*.*...");
    Map payload = res.getPayload();
    System.out.println("BPEL called");
    XMLElement xmlEl=(oracle.xml.parser.v2.XMLElement)payload.get("payload");
    String replyText=xmlEl.getText();
    System.out.println("Reply from BPEL Process>>>>>>>>>>>>> "+replyText);
    catch (Exception e) {
    e.printStackTrace();
    I Included the following jar files:
    Orabpel-ant.jar
    Orabpel.jar
    Orabpel-common.jar
    Orabpel-boot.jar
    Xmlparserv2.jar
    Ejb30.jar
    and getting the exception:
    Exception in thread "main" java.lang.NoClassDefFoundError: javax/ejb/EJBException
         at com.oracle.bpel.client.util.ExceptionUtils.handleServerException(ExceptionUtils.java:76)
         at com.oracle.bpel.client.delivery.DeliveryService.getDeliveryBean(DeliveryService.java:254)
         at com.oracle.bpel.client.delivery.DeliveryService.request(DeliveryService.java:83)
         at com.oracle.bpel.client.delivery.DeliveryService.request(DeliveryService.java:53)
         at callbpelfromjava.BPELCaller.main(BPELCaller.java:39)
    Am I doing any thing wrong ?
    Thanks
    Krrish

    Hello Marc,
    Thank you for the reply.
    I could not find some of the jar files in my Jdeveloper 10.1.3.1.0
    ../lib/olite40.jar
    ../lib/wsclient_extended.jar
    ../lib/log4j-1.2.14.jar
    could you please help me locating these jars.
    or If possible, could you mail me those jars at [email protected]
    I have included all other jar files you have listed and getting the following errror:
    java.lang.Exception: Failed to create "ejb/collaxa/system/DeliveryBean" bean; exception reported is: "javax.naming.NameNotFoundException: ejb/collaxa/system/DeliveryBean not found
         at com.evermind.server.rmi.RMIClientContext.lookup(RMIClientContext.java:52)
         at javax.naming.InitialContext.lookup(InitialContext.java:351)
         at com.oracle.bpel.client.util.BeanRegistry.lookupDeliveryBean(BeanRegistry.java:279)
         at com.oracle.bpel.client.delivery.DeliveryService.getDeliveryBean(DeliveryService.java:250)
         at com.oracle.bpel.client.delivery.DeliveryService.request(DeliveryService.java:83)
         at com.oracle.bpel.client.delivery.DeliveryService.request(DeliveryService.java:53)
         at callbpelfromjava.BPELCaller.main(BPELCaller.java:39)
         at com.oracle.bpel.client.util.BeanRegistry.lookupDeliveryBean(BeanRegistry.java:293)
         at com.oracle.bpel.client.delivery.DeliveryService.getDeliveryBean(DeliveryService.java:250)
         at com.oracle.bpel.client.delivery.DeliveryService.request(DeliveryService.java:83)
         at com.oracle.bpel.client.delivery.DeliveryService.request(DeliveryService.java:53)
         at callbpelfromjava.BPELCaller.main(BPELCaller.java:39)
    Thanks
    Krrrish

  • Calling c method from java with jniwrapper

    Hello
    Does anyone have any good example or links to j�niwrapper method.
    I have checked documentation www.jniwrapper.com. However i think I would need a clear example or example code on how to call an c function from javaprogram.
    Please help!
    Regards Land�

    Does jniwrapper work with MIDP 2 on the devices that have kvm..?

  • Calling SQL LOADER From Java Program

    Hi
    I need to invoke sql loader from inside a Java Class.
    Any Pointers in this regards will be really appreciated.
    Thanks
    Vishal

    You can create two different files which has sqlldr command defined....
    1. loader.sh
    2. loader.bat
    and in the depending on the OS execute one...
             String command = "";
             if(System.getProperty("os.name").equals("Windows 2000")){
                    //if os is windows 2000  then execute bat file
                     command =  <<bat file path>>
              }else{
                      command = <<shell path>>
              Runtime rt = Runtime.getRuntime();
              Process p = rt.exec(command);
              int i = p.exitValue();
             

  • How to call msword application from java program

    hai every body
    i want to know about OLE in java.
    how can i invoke msoffice application in java code.
    if any body have sanple code for this post for me
    thank you

    There are some bridges available ...
    http://www.google.com/search?q=ole+java+bridge

  • Calling oracle SQL Loader from java program

    Hi,
    I want to insert data into oracle tables from a text files containing fixed length fields. I am using SQLLoader to achieve this. The requirement is to call the SQLLoader within the java program.
    Does anyone know how to call SQL Loader from java program?
    Thanks,
    Varsha

    Simply "exec" the sqlldr program with the parameters you need to pass to it.
    Runtime.exec (........)
    Try to pass all parameters needed including the username and password, and use the option "silent" to avoid output, and the option "log" to have a log file of the modifications that sqlldr has done to the database.

Maybe you are looking for

  • Vector, calling a method of an object in a Vector

    hi and sorry for my poor english. problem: i have a Vector: Vector objects = new Vector();i put some Objects in this Vector: objects.addElement(new testObject());in the class testObejct() i've defined some methods like: public method1() {     System.

  • HP Laserjet M1217nfwMFP Airprint Problem

    I have a HP Laserjet Pro M1217nfw MFP connected to a network and the ipad 2 will recogonize and print fine but will not stop printing until I hit the home button twice and stop the printing through the iPad printer queue. I restored the iPad to facto

  • Replacement optical drive for early 2008 MacBook

    I own an early 2008 2.4 GHz Intel Core 2 Duo 13" MacBook that appears to have developed a fault with the MATSHITA DVD-R UJ-857E optical drive. Unfortunately I am unable to get the optical drive replaced by Apple, as it seems they don't keep the parts

  • Payment Wizard - Series period does not match current period

    Hi All, I've a problem during creation of Incoming Payment through Payment Wizard. 0 payments were added at the end of creation Incoming Payments--> Bill of Exchange  using Payment Wizard. In Non-Included Transactions  I can read: series period does

  • How to set up a pro headphone mix  in logic express 8

    using logic express 8 software, avalon tube amp, 4 channel head phone mixer, yamaha O1V digital mixer and running through a line 6 toneport UX2 unit cant figure out how to get a nice individual headphone mix for vocals with effect inserts inside logi