JNI & pointer games in Java

The problem:
I'm malloc'ing a chunk off the stack and returning an int64 with the pointer value into Java. I need to be able to read and write segments of this malloc'ed region from Java without jumping into native functions constantly. Is there a way to root around in this block from within Java? Or would it be better to pull values out of the JVM instead of an intermediate block of memory?
The situation:
I'm working on extending a program that reads DLLs and creates dictionaries of class definitions. Member variables are tracked from the core by a root pointer and a memory offset. struct s {int a; int b;} would be defined in the core with the variables {{"a", enum_int, 0}, {"b", enum_int, 4}}, assuming 32b ints. This model probably wouldn't work to well when applied to objects within the JVM, and I doubt that reaching straight into a JVM's stack and reading values with pointer arithmatic is particularly safe, either. The practical alternative is to hand Java a block of native malloc'ed memory, but then Java needs to be able to pull values out of an arbitrarily organized block.
The macro for defining those member offsets in C is "#define PADDR(X) ((char*)&(this->X)-(char*)this)", to give some perspective.
-Matt

Is there a way to root around in this block from within Java?As stated no.
There is a memory locked JNI api (go look it up). You would map that to a char array then access it that way.
Memory locking has implications for gc so it is usually suggested that you create the space at program start up and not re-allloc while running. Or otherwise don't keep it for very long.
be able to pull values out of an arbitrarily organized block.Memory mapping is only going to work on a contigous block.

Similar Messages

  • Can I Write a * Game in Java?

    I have noticed loads of topics lately along the lines of "Can I write a quake style shooter in java" or "could I write a mmporg in Java" and similar for almost every style of game. I'd just like to make a quick point on this:
    Java is a programming language. At the stage it has reached now it can do anything any other programming language can do. It's strengths and weaknesses may be different from those of C, C++, Visual Basic, Lisp or whatever other languages people use regularly, but when it gets right down to it Java isn't the problem. If you can design it effectively then you can implement it in any complete language. It may not be easy but it is possible. The answer to this question is invariably yes.
    These forums are far more useful for asking practical questions rather than asking conceptual ones. A better question might be "how would I best start to design a * to be implemented in Java?"

    Yeah thats a good point. I think that Java has been so popular for so long that it can pretty well do anything as long as the designer designs it properly.
    I've made a http web server, and just yesterday I made a pong style game. Java works for almost anything. Take a cruse through the Java Programming forum. People there are using Java to sort money things and everything.

  • [JNI Beginner] GC of Java arrays returned by the native code

    Hello all,
    I am beginning with JNI, to integrate a C library that pilots an industrial equipment, into a java UI. This library enables to exchange various proprietary PDUs (protocol data units), with the equipment, up and down (request/replies). Both requests and replies are arrays of bytes (+char*+).
    "Request" byte arrays are constructed by Java code, which passes them to the JNI code that glues with the lib. "Reply" byte arrays are returned to the Java code, which analyzes them.
    The "return reply" part is very similar to this [tutorial example|http://java.sun.com/developer/onlineTraining/Programming/JDCBook/jniexamp.html] , which returns bytes read from a file. However there's something I don't understand with regard to garbage collection of the returned byte array:
    - in this stock example, the C code creates a Java byte array fills it, and simply returns it (example code stripped to highlight only the parts relevant to my question):
        jByteArray=(*env)->NewByteArray(env, size);
        (*env)->SetByteArrayRegion(env, jByteArray, 0, size, (jbyte *)sourceBytes);
        return (jByteArray);What will happen to this Java array (jByteArray) with regard to garbage collection?
    - if it's no more referenced (the example Java code just systemouts it and forgets it), will it be eligible to GC?
    - if it is referenced by a Java variable (in my case, I plan to keep a reference to several replies as the business logic requires to analyze several of them together), do regular Java language GC rules apply, and prevent eligibility of the array to GC as long as it's referenced?
    That may sound obvious, but what mixes me up is that the same tutorial describes memory issues in subsequent chapters: spécifically, the section on "passing arrays states that:
    [in the example] the array is returned to the calling Java language method, which in turn, garbage collects the reference to the array when it is no longer usedThis seems to answer "yes" to both my questions above :o) But it goes on:
    The array can be explicitly freed with the following call:
    {code} (*env)-> ReleaseByteArrayElements(env, jByteArray, (jbyte *)sourceBytes, 0);{code}Under what circumstances would one need to explicitly free jByteArray when it's about to be returned to the Java calling method? Or does this sentence apply to completely different situations (such as, when the array is +not+ returned as is to a Java method)?
    The tutorial's next section has a much-expected +memory issues+ paragraph, from which I quote:
    By default, JNI uses local references when creating objects inside a native method. This means when the method returns, the references are eligible to be garbage collected.I assume this means, +unless the references are assigned, in the Java code, to a Java variable+, right?
    If you want an object to persist across native method calls, use a global reference instead. A global reference is created from a local reference by calling NewGlobalReference on the the local reference.I assume this enables the C code to maintain a global reference to a java object even if it's not referenced anymore from the Java variables, right?
    I also checked the [JNI specification|http://download-llnw.oracle.com/javase/6/docs/technotes/guides/jni/spec/design.html#wp1242] , but this didn't clear the doubt completely:
    *Global and Local References*
    The JNI divides object references used by the native code into two categories: local and global references. Local references are valid for the duration of a native method call, and are automatically freed after the native method returns. Global references remain valid until they are explicitly freed.
    Objects are passed to native methods as local references. All Java objects returned by JNI functions are local references. The JNI allows the programmer to create global references from local references. JNI functions that expect Java objects accept both global and local references. A native method may return a local or global reference to the VM as its resultAgain I assume the intent is that Global references are meant for objects that have to survive across native calls, regardless of whether they are referenced by Java code. But what worries me is that combining both sentences end up in +All Java objects returned by JNI functions are local references (...) and are automatically freed after the native method returns.+.
    Could you clarify how to make sure that my Java byte arrays, be they allocated in C code, behave consistently with a Java array allocated in Java code (I'm familiar already with GC of "regular" Java objects)?
    Thanks in advance, and best regards,
    J.

    jduprez wrote:
    Hello all,
    I am beginning with JNI, to integrate a C library that pilots an industrial equipment, into a java UI. This library enables to exchange various proprietary PDUs (protocol data units), with the equipment, up and down (request/replies). Both requests and replies are arrays of bytes (+char*+).
    "Request" byte arrays are constructed by Java code, which passes them to the JNI code that glues with the lib. "Reply" byte arrays are returned to the Java code, which analyzes them.
    The "return reply" part is very similar to this [tutorial example|http://java.sun.com/developer/onlineTraining/Programming/JDCBook/jniexamp.html] , which returns bytes read from a file. However there's something I don't understand with regard to garbage collection of the returned byte array:
    - in this stock example, the C code creates a Java byte array fills it, and simply returns it (example code stripped to highlight only the parts relevant to my question):
        jByteArray=(*env)->NewByteArray(env, size);
    (*env)->SetByteArrayRegion(env, jByteArray, 0, size, (jbyte *)sourceBytes);
    return (jByteArray);What will happen to this Java array (jByteArray) with regard to garbage collection?It will be collected when it is no longer referenced.
    The fact that you created it in jni doesn't change that.
    The array can be explicitly freed with the following call:
    (*env)-> ReleaseByteArrayElements(env, jByteArray, (jbyte *)sourceBytes, 0);Under what circumstances would one need to explicitly free jByteArray when it's about to be returned to the Java calling method? Or does this sentence apply to completely different situations (such as, when the array is not returned as is to a Java method)?
    Per what the tutorial says it is either poorly worded or just wrong.
    An array which has been properly initialized it a just a java object. Thus it can be freed like any other object.
    Per your original question that does not concern you because you return it.
    In terms of why you need to explicitly free local references.
    [http://download-llnw.oracle.com/javase/6/docs/technotes/guides/jni/spec/design.html#wp16785]
    The tutorial's next section has a much-expected memory issues paragraph, from which I quote:
    By default, JNI uses local references when creating objects inside a native method. This means when the method returns, the references are eligible to be garbage collected.I assume this means, unless the references are assigned, in the Java code, to a Java variable, right?As stated it is not precise.
    The created objects are tracked by the VM. When they are eligible to be collected they are.
    If you create a local reference and do NOTHING that creates an active reference elsewhere then when the executing thread returns to the VM then the local references are eligible to be collected.
    >
    If you want an object to persist across native method calls, use a global reference instead. A global reference is created from a local reference by calling NewGlobalReference on the the local reference.That is not precise. The scope is the executing thread. You can pass a local reference to another method without problem.
    I assume this enables the C code to maintain a global reference to a java object even if it's not referenced anymore from the Java variables, right?
    It enables access to it to be insured across multiple threads in terms of execution scope. Normally you should not use them.

  • Solution manager4.0  error at point of import java dump.

    hi gurus,
    While installing solution manager 4.0, I am getting error at point of import java dump.
    for any suggestions appreciated.
    OS  :  windows 2003 server
    Sql  : SQL 2005 server
    log file:
    java version "1.4.2_13"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_13-b06)
    Java HotSpot(TM) Client VM (build 1.4.2_13-b06, mixed mode)
    Nov 7, 2007 2:49:22 PM com.sap.inst.jload.Jload main
    INFO: Jload -sec DSM,jdbc/pool/DSM,
    MEMSRV407/sapmnt/DSM/SYS/global/security/data/SecStore.properties,
    MEMSRV407/sapmnt/DSM/SYS/global/security/data/SecStore.key -dataDir D:/SAP_Solution_Manager4.0_SP2/Javacomponents\JAVA_EXPORT\JDMP -job C:\Program Files\sapinst_instdir\SOLMAN\SYSTEM\MSS\CENTRAL\AS\IMPORT.XML -log jload.log
    Nov 7, 2007 2:49:35 PM com.sap.inst.jload.Jload main
    SEVERE: couldn't connect to DB
    Nov 7, 2007 2:49:35 PM com.sap.inst.jload.Jload logStackTrace
    SEVERE: java.sql.SQLException: [NWMss][SQLServer JDBC Driver][NWMss][SQLServer JDBC Driver]The requested instance is either invalid or not running.
         at com.sap.nwmss.jdbc.base.BaseExceptions.createException(Unknown Source)
         at com.sap.nwmss.jdbc.base.BaseExceptions.getException(Unknown Source)
         at com.sap.nwmss.jdbc.sqlserver.tds.TDSConnection.<init>(Unknown Source)
         at com.sap.nwmss.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
         at com.sap.nwmss.jdbc.base.BaseConnection.connect(Unknown Source)
         at com.sap.nwmss.jdbc.base.BaseConnection.setupImplConnection(Unknown Source)
         at com.sap.nwmss.jdbc.base.BaseConnection.open(Unknown Source)
         at com.sap.nwmss.jdbc.base.BaseDriver.connect(Unknown Source)
         at com.sap.sql.jdbc.NativeConnectionFactory.createNativeConnection(NativeConnectionFactory.java:215)
         at com.sap.sql.connect.OpenSQLDataSourceImpl.createConnection(OpenSQLDataSourceImpl.java:522)
         at com.sap.sql.connect.OpenSQLDataSourceImpl.getConnection(OpenSQLDataSourceImpl.java:276)
         at com.sap.inst.jload.db.DBConnection.connectViaSecureStore(DBConnection.java:105)
         at com.sap.inst.jload.db.DBConnection.connect(DBConnection.java:149)
         at com.sap.inst.jload.Jload.main(Jload.java:580)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:324)
         at com.sap.engine.offline.OfflineToolStart.main(OfflineToolStart.java:81)
    Thanks
    Ramana

    HI,
    You are using java 1.4.2_13... which is ok but i would recomend to use 1.4.2_09.. and download your export cd's again.
    Thanks,
    will fix it.

  • Help calling JNI function from a java thread

    I am using the following code to call a JNI fuction from a java thread:
    public class CMSMessageHandler extends MessageHandler{
    static{
    System.loadLibrary("jastb");
    public native int cmsReadIt(ByteBuffer buff);
    private ByteBuffer dirbuf = null;
    /** Creates a new instance of CMSMessageHandler */
    public CMSMessageHandler() {
    // allocate to max size datagram
    dirbuf = ByteBuffer.allocateDirect(65536);
    public void readMessages(){
    /*Thread worker = new Thread(){
    public void run(){*/
    int count;
    while (true){
    try{
    count = cmsReadIt(dirbuf);
    } catch (Exception e){
    e.printStackTrace();
    worker.start();*/
    public static void main(String[] args) {
    CMSMessageHandler handler = new CMSMessageHandler();
    handler.readMessages();
    When I run this main method with the thread commented out, it works great. When I run the main method with the thread, it works great for a while, and then funny things start happening with the native library I am using. My native library uses shared memory, signals, and semaphores. It feels a bit like my java program is stomping on the resources that my native library is using, when a run the java program with a thread.
    Is there something I don't know about calling native code from a thread? Should I be doing something explicitly to protect my native library's shared memory, signals, or semaphores?
    Thanks,
    Lisa.

    Does the library do any initialization when loaded? Does it make a dangerous assumption that the thead calling cmdReadIt will always be the same thread that initially loaded it? Try loading the library in the worker thread instead of in the main thread via the static initializer.Yes. There is a call to another native method cmsOpenIt that does CMS initialization. I put cmsOpenIt as well as the System.loadLibrary("jastb") in the worker thread and I'm still experiencing the same problems.
    Incidently, the mere presence of another Thread in this program does not seem to cause problems. It's only when I run calls to cmsReadIt in a thread that I get into trouble.
    For example, this works fine:
    public class CMSMessageHandler extends MessageHandler{
        public native int cmsReadIt(ByteBuffer buff);
        public ByteBuffer dirbuf = null;
        static {
            System.loadLibrary("jastb");
        public CMSMessageHandler() {
            // allocate to max size datagram
            dirbuf = ByteBuffer.allocateDirect(65536);
        public void readMessages(){
            try{
                int count = 0;
                while (true){
                    count = cmsReadIt(dirbuf);
            } catch (Exception e){
        public static void main(String[] args) {
            CMSMessageHandler handler = new CMSMessageHandler();
            Thread worker = new Thread(){
                public void run(){
                    while (true){
                        try{
                            Thread.currentThread().sleep(1000);
                            System.out.println("sleep thread.");
                        } catch (Exception e){
                            e.printStackTrace();
            worker.start();
            handler.readMessages();  
        }Are there JVM flags that I should experiment with that might help mitigate/diagnose this problem?

  • Want help in developing my first game in java!!

    I want to develop a tetris game in java..can any one help me on this..basically i m new to java programming, i want to know abt the graphical part ..how to make that.. i will code the rest..I want to make an application rather than an applet..

    look at the Java2D demo that comes with the JDK
    it has lots of source code and just about everything you'll need to do in Tetris (technology wise) is in there, except the game logic.
    when you're ready to move into 3D and heavier apps, try this book:
    Practical Java Game Programming
    http://www.amazon.com/exec/obidos/tg/detail/-/1584503262/102-3570681-1096110?v=glance

  • Making Games in Java!!!

    hey i want to make a game in java but i want to get a lot more ideas about what the game should be like and what it should do. I want to actually work with someone else to make the game and then we can sell it or something like that. So if anyone is interested just make a reply OR e-mail me at [email protected] thanks.

    hey i want to make a game in java but i want to get a
    lot more ideas about what the game should be like and
    what it should do. I want to actually work with
    someone else to make the game and then we can sell it
    or something like that. So if anyone is interested
    just make a reply OR e-mail me at [email protected]
    thanks.This post is an email harvester's dream.

  • ı  cant  still  play   at  yahoo  games   after  java   upgrade,  why    someone    doesn't  hall  me

    ı  have  mac  book  air   ,  mac  os  mountain  lion   x   8    2    and  java   7   9  is  loaded...ı  cant  play    at  yahoo  games   after  java  upgradede  to   7 9  ,  ı  have  been   writing  here   to  expect  someone  hear me   and  help  me?   is  this   just  for   trade   or    help  customers    to  solve   problems  they  meet...ı   want  apple  professionals    hear   and  help  me  !!!  what  can  ı  do?    all  were   done  properly  but   when  ı   enter  yahoo  lounge   and  attemp  to    join  a  table   ,   it  quits   and    ı  cant  join  then  it  says  error  lodging....can  someone  help  me  ,  pls  urgent  !!!!

    ı  have  mac  book  air   ,  mac  os  mountain  lion   x   8    2    and  java   7   9  is  loaded...ı  cant  play    at  yahoo  games   after  java  upgradede  to   7 9  ,  ı  have  been   writing  here   to  expect  someone  hear me   and  help  me?   is  this   just  for   trade   or    help  customers    to  solve   problems  they  meet...ı   want  apple  professionals    hear   and  help  me  !!!  what  can  ı  do?    all  were   done  properly  but   when  ı   enter  yahoo  lounge   and  attemp  to    join  a  table   ,   it  quits   and    ı  cant  join  then  it  says  error  lodging....can  someone  help  me  ,  pls  urgent  !!!!

  • Space Game In Java

    Hi Java Game Developers
    Me and a friend from work developed a game in Java. Its at www.spacemercenaries.com
    If you want to play click on play sm, this will load the client applet.
    It will also ask you to confirm a certificate, this is because the applet uses sockets to connect to the server and if you view battles it saves a copy of the battle to your machine (the files will be stored in your home directory for the use logged on - to see the directory open the java console and you sould find it there)
    If you have any questions or comments please feel free to ask and comment :-)

    You should write a JFrame version of the game so it runs faster. Also that means that if your web browser's java plugin doesn't work but you have java installed (like me) then you can still play the game. If you need help porting, I'll do it.
    Just a thought.
    For free Java Games/Apps and a free tech support, go to my website at
    www.freewebs.com/masternerdguy

  • Need help creating text based game in Java

    Alright, I'm taking a big leap and I'm jumping a little out of league here. Anyways here are my two classes...I'm sure I've got plenty of errors :-/ One other thing. I have only programmed the battle section of the program so don't worry about the other 5 sections when fixing the code.
    import cs1.Keyboard;
    public class Knights
        public static void main (String[] args)
            // Object Declaration
            KnightsAccount player1 = new Account (1, 100, 200);
            // variable declarations
            boolean run = true;
            int choice;
            // Game Start
            System.out.println ("Welcome to Knights.");
            System.out.println ("--------------------------------------");
            System.out.println ("You are a level 1 character.  With 100 HP and 200 gold...good luck.");
            System.out.println ();
            while (run == true)
                System.out.println ();
                System.out.println ("Enter the number of the option you would like to do");
                System.out.println ();
                System.out.println ("1. Battle");
                System.out.println ("2. Train");
                System.out.println ("3. Work");
                System.out.println ("4. Rest");
                System.out.println ("5. Stats");
                System.out.println ("6. Quit");
                choice = Keyboard.readInt();
                if (choice == 1)
                    player1.battle();
                else if (choice == 2)
                    player1.train();
                else if (choice == 3)
                    player1.work();
                else if (choice == 4)
                    player1.rest();
                else if (choice == 5)
                    player1.stats();
                else
                    run = false;
    }And here is the second class...
    import java.util.Random;
    public class KnightsAccount
        public String winner;
        public int exp = 0;
        public void Account (int level, int hitPoints, int gold) {}
        public battle ()
            Random generator = new Random();
            int pumpkinHP = 80;
            int playerAttack, pumpkinAttack;
            System.out.println ("Engaged in combat with an Evil Pumpkin!");
            while (hitPoints > 0 && pumpkinHP > 0)
                if (pumpkinHP > 0)
                    playerAttack = generator.nextInt(15);
                    hitPoints -= playerAttack;
                    System.out.println ("Player 1 attacked Evil Pumpkin for " + playerAttack + ".");
                    System.out.println ("Evil Pumpkin has " + hitPoints + " HP left.");
                if (pumpkinHP <= 0)
                    pumpkinDead();
                if (hitPoints > 0 && !(pumpkinHP <= 0))
                    pumpkinAttack = generator.nextInt(12);
                    hitPoints -= pumpkinAttack;
                    System.out.println ("Evil Pumpkin attacked Player1 for " + pumpkinAttack + ".");
                    System.out.println ("Player 1 has " + pumpkinHP + " HP left.");
                if (hitPoints <= 0)
                    playerDead();
            return winner;
        private pumpkinDead ()
            System.out.println ("Success!  You have defeated the Evil Pumpkin with " + hitPoints + "HP left!");
            System.out.println ("For you good deed you earned 20 exp.");
            exp += 20;
            return exp;
        private void playersDead ()
            System.out.println ("You have been defeated.  Go home before we pelt melty cheeze at you.");
    }Whoever can help me I'd be grateful. I know there are probably a lot of things wrong here. Also if some of you could post your AIM or MSN so that I can get some one on one help on any of the smaller problems I run acrost that would help a lot too.
    Duke dollars to whoever helps me ;)
    AIM: Trebor DoD
    MSN: [email protected]

    You should really create a GameCharacter object that contains the
    statistics for a character (player or non-player) in the game.
    public class GameCharacter {
       private double attackStrength;
       private double defenseStrength;
       private String name;
       private String[] bodyParts;
       private Random = new Random();
    public GameCharacter(String name, String[] bodyParts, double attackSt, double defenseSt){
       this.attackStrength = attackSt;
       this.defenseStrength = defenseSt;
       this.bodyParts = bodyParts;
       this.name = name;
    // put lots of methods in here to get and set the information
    public String getName(){
      return this.name;
    public String getRandomBodyPart(){
       return this.bodyParts[random.nextInt(this.bodyParts.length)];
    }You then create your "knight" character and your "rabid pumpkin"
    character.
    Your fight method then just takes two GameCharacter objects and uses
    the information they contain to fight the battle.
    public void fight(GameCharacter a, GameCharacter b) {
       boolean fightOver = false;
       Random rn = new Random();
       double attackValue;
       while(!fightOver) {
           attackValue = a.getAttackStrength()*rn.nextDouble();
           System.out.println(a.getName()+" attacks "+b.getName()+"'s "+b.getRandomBodyPart()+" for "+attackValue+" points");
    }The above is not the fighting loop of course. I just put it in to
    demostrate how the fight method can be made generic. It takes any
    two characters and uses their defensive and attack information to
    calculate the fight outcome. It also uses the descriptions that the characters have
    to make the fight more interesting. (the getRandomBodyPart method in
    particular)
    matfud

  • Automate MS Power Point by using JAVA

    Dear all,
    I would like to write a JAVA program that can open the the MS Power Point file and then use the events to ask the power point to show the slide or go to a particular slide. I would like to know is it possible to do so??? Becasue these are 2 different company's developement thing......
    It is very improtant for my final year project thanks for help!!!
    Please email to tell me. My email address is: [email protected]
    Thanks so much~~~
    Cheers~~~
    Yours,
    Ramond

    I agree with the point of using another language than java, if this is still possible.
    If java has to be used, you need either some kind of COM bridge (never heard of that), JNI (java native interface), which can be difficult or - which is my preferred solution - write an external program (.exe file) in a "native" language like Visual Basic of C/C++ which does the COM calls. Call the program with Runtime.getRuntime().exec().
    If you are following my proposed approach and you are using a language different from C/C++, could you please tell me how this worked out for you ? My email address is [email protected]
    Good luck

  • Break Point in Webdynpro JAVA and SAP

    Good Morning.
    I am creating a development for web dynpro Java using Function Module RFC in ABAP.
    I want know how can put a break point in the system SAP ERP (Backend) and run an application in web dynpro java?
    I did this steps:
    1.) SE37--->name RFC
    2) button Display
    3) Set/Delete external Break point.
    4) In the SAP Netweaver Developer Studio >Name of project>Webdynpro>Applications>Name Appplication-->deploy new archive and run.
    But this not stop.
    The question is :
    How can do this?
    Kind Regards

    Hi,
    Refer this article: [Debugging ABAP Code from within Web Dynpro Application|http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/0e9a9d90-0201-0010-478e-991dbea73a30&overridelayout=true].
    I hope it helps.
    Regards
    Arjun

  • In JNI how to call Java methods from native language methods

    I just build the example of java tutorial on
    http://java.sun.com/docs/books/tutorial/native1.1/implementing/method.html
    but when I excute, it says:
    Callbacks.c:1:syntax error before 'void'
    Callbacks.c:2:parse error before '*'
    Callbacks.c:In function 'Java_Callbacks_nativeMethod':
    attached:
    Callbacks.c
    JNIEXPORT void JNICALL
    Java_Callbacks_nativeMethod(JNIEnv *env, jobject obj, jint depth)
    jclass cls = (*env)->GetObjectClass(env, obj);
    jmethodID mid = (*env)->GetMethodID(env, cls, "callback", "(I)V");
    if (mid == 0) {
    return;
    printf("In C, depth = %d, about to enter Java\n", depth);
    (*env)->CallVoidMethod(env, obj, mid, depth);
    printf("In C, depth = %d, back from Java\n", depth);
    Callbacks.java
    class Callbacks {
    private native void nativeMethod(int depth);
    private void callback(int depth) {
    if (depth < 5) {
    System.out.println("In Java, depth = " + depth + ", about to enter C");
    nativeMethod(depth + 1);
    System.out.println("In Java, depth = " + depth + ", back from C");
    } else
    System.out.println("In Java, depth = " + depth + ", limit exceeded");
    public static void main(String args[]) {
    Callbacks c = new Callbacks();
    c.nativeMethod(0);
    static {
    System.loadLibrary("MyImpOfCallbacks");

    Looks like you havn't included the jni header file. Add this to the top of the .c file:
    #include "jni.h"

  • JNI - how to use java access function in TypeLibrary( .tlb file) HELP ME PL

    Hey All
    I got one project which can be done by calling up functions in xxxx.tlb
    (window type library) file, that is no problem.
    How to use java to access those functions???
    I know there are some classes which can be used to access function in
    DLL file e.g. JAWIN.
    Is the .tlb file related to one DLL file??? if so, how to locate the
    DLL file through .tlb file???
    Thanks a lot.
    Steve

    Use JNI to create a link between Java class and a DLL, then you can load that DLL (or TLB) from that class.
    Read the JNI Tutorials.

  • Help plotting points in a java Applet using Bresens Algorithm

    Hi,
    I am trying to compile my code and it doesn't like POINT. I am guesing I am using the wrong thing.
    Point.point(Math.round(x), Math.round(y)); and I tried just Point.
    How do I plot points so that it forms a line. What internal function do I use?
    Here is my code.
    import java.applet.*;
    import java.awt.*;
    import java.lang.Math;
    import java.awt.Point;
    import java.awt.Graphics;
    public class DDASimple extends Applet
         int   dx, dy, steps, k, absolutex, absolutey;
         float xinc, yinc, x, y;
       public void init()
    public void paint(Graphics g)
    DDASMPL(50,50,100,150);
    public void DDASMPL(int x1, int y1, int x2, int y2)
      repaint();
      dx = (x2-x1);
      dy = (y2-y1);
    //absolutex =
      if( Math.abs(dx) > Math.abs(dy))
         steps = Math.abs(dx);
      else
         steps = Math.abs(dy);
         xinc = dx / steps;
         yinc = dy / steps;
         x = x1;
         y = y1;
    Point.point(x1, y1);
          for (k = 1; k < steps; k++)
              x = x+ xinc;
              y = y + yinc;
    Point.point(Math.round(x), Math.round(y));
    //g.drawOval(Math.round(x), Math.round(y));
         }//end else
    }//end function dda
    }//end class ddda applet

    I took out the repaint(). and below is the updated version
    I am not getting anything now, no line
    import java.applet.*;
    import java.awt.*;
    import java.lang.Math;
    import java.awt.Point;
    import java.awt.Graphics;
    public class DDASimple extends Applet
         int   dx, dy, steps, k, absolutex, absolutey;
         float xinc, yinc, x, y;
       public void init()
    public void paint(Graphics g)
    DDASMPL(160, 140, 220, 140, g);
    public void DDASMPL(int x1, int y1, int x2, int y2, Graphics g)
      dx = (x2-x1);
      dy = (y2-y1);
    //absolutex =
      if( Math.abs(dx) > Math.abs(dy))
         steps = Math.abs(dx);
      else
         steps = Math.abs(dy);
         xinc = dx / steps;
         yinc = dy / steps;
         x = x1;
         y = y1;
    //Point xxx = new Point(x1, y1);
    g.fillRect(x1, y1, 1, 1);
          for (k = 1; k < steps; k++)
              x = x+ xinc;
              y = y + yinc;
    //Point.point(Math.round(x), Math.round(y));
    g.fillRect(Math.round(x), Math.round(y),1 ,1);
         }//end else
    }//end function dda
    }//end class ddda applet

Maybe you are looking for

  • Wrong data is showing with diff. G/L Account in Report

    Hi, When i m execting my report, it is showing output like this:-- G/L No..............PO Number..............Item..............Vendor.........Material 350000.............4500000745..............10...............10024.............ABC 350000..........

  • "Do not import duplicates" is not working

    The "Do not import duplicates" box is checked for all imports but is not working.  This is both for my Nikon DSLR, my Canon S-95 and my iPhone. This was happening with both Snow Leapord and Lion as operating system.  I have been using Aperture since

  • Two 24 inch cinema displays - one has a yellow tint

    I have 2 cinema displays that are less than one year old. Today, I noticed that one of them has a distinct yellow tint to the display colors compared to the other. I've never noticed this before and I am wondering if the display needs to be re-calibr

  • ADF : af:query saved search issue

    hi Please consider this example application from Andrejus Baranovskis http://jdevsamples.googlecode.com/files/UserCustomizationsSession.zip (which he refers to from his blog post "User Customizations for Duration of Session in Oracle ADF 11g") I see

  • Full text search in CMSK 9.0.3  WebStarterApp

    I deployed WebStarterApp on CMSDK 9.0.3 and I cannot perform full text search on the CMSDK document. Is there anybody who encounters the same problem ? Thanks