JNI-Can't access variables in native methods

Hello,
I wrote a simple JNI code in which the native method accesses an instance
method, prints it and modifies it. The java method is names Sample.java
and the native method is called Sample.c.
The problem is I don't seem to get the variables correctly accessed in the
native code. I am reproducing Sample.java, Sample.c and Sample.h. here. I
am also reproducing the output.
Please let me know if there are any mistakes..
//Sample.java
public class Sample
int i;
public native void modify();
Sample()
i = 10;
System.out.println("In Java: i = "+ i);
static
System.loadLibrary("samp");
public static void main(String [] args)
Sample s = new Sample();
s.modify();
System.out.println("Again in Java: " +s.i);
//Sample.c
#include <jni.h>
#include "Sample.h"
#include <stdio.h>
JNIEXPORT void JNICALL Java_Sample_modify(JNIEnv * env, jobject obj)
jclass cls = (*env)->GetObjectClass(env, obj);
jfieldID fid;
jint ci;
fid = (*env)->GetFieldID(env, cls, "i", "I");
ci = (*env)->GetIntField(env, cls, fid);
printf("Accessed in c\n: i = %d\n", ci);
(*env)->SetIntField(env, cls, fid, 200);
printf("modified in c\n i = %d\n", ci);
//Sample.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Sample */
#ifndef IncludedSample
#define IncludedSample
#ifdef __cplusplus
extern "C" {
#endif
* Class: Sample
* Method: modify
* Signature: ()V
JNIEXPORT void JNICALL Java_Sample_modify
(JNIEnv *, jobject);
#ifdef __cplusplus
#endif
#endif
and the output is
In Java : i=10
Accessed in c
: i=196653
modified in c
i=196653
Again in Java : 10
Thanks,
Aditya

GetFieldID(..) expects an obj variable, not a cls. The
obj passed in is a reference to the java object you
are trying to modify, so you need to pass this to
GetFieldID(..) etc.
See below:
JNIEXPORT void JNICALL Java_Sample_modify(JNIEnv *
env, jobject obj)
jclass cls = (*env)->GetObjectClass(env, obj); /// NOT
REQUIRED
jfieldID fid;
jint ci;
fid = (*env)->GetFieldID(env, cls, "i", "I"); // USE
THE obj PASSED in NOT cls
...hope this helps :)Hi
From what I got I modified the code as
fid = (*env)->GetFieldID(env, obj, "i", "I");//obj instead of cls
Well, the program kinda crashed :-(
Moreover I used the same code I found in the jni tutorials on the sun website..which I reproduce. I noted that they used cls instead of obj.
#include <stdio.h>
#include <jni.h>
#include "FieldAccess.h"
JNIEXPORT void JNICALL
Java_FieldAccess_accessFields(JNIEnv *env, jobject obj)
jclass cls = (*env)->GetObjectClass(env, obj);
jfieldID fid;
jstring jstr;
const char *str;
jint si;
printf("In C:\n");
fid = (*env)->GetStaticFieldID(env, cls, "si", "I");
if (fid == 0) {
return;
si = (*env)->GetStaticIntField(env, cls, fid);
printf(" FieldAccess.si = %d\n", si);
(*env)->SetStaticIntField(env, cls, fid, 200);
fid = (*env)->GetFieldID(env, cls, "s", "Ljava/lang/String;");
if (fid == 0) {
return;
jstr = (*env)->GetObjectField(env, obj, fid);
str = (*env)->GetStringUTFChars(env, jstr, 0);
printf(" c.s = \"%s\"\n", str);
(*env)->ReleaseStringUTFChars(env, jstr, str);
jstr = (*env)->NewStringUTF(env, "123");
(*env)->SetObjectField(env, obj, fid, jstr);
I may not have got your exact message :-(. But something seems to be wrong with yhe code and being a begining jni programmer, I am absolutely clueless:-(
Any help would be appreciated :-)
Thanks,
Aditya

Similar Messages

  • How can I return in a native method a Java type?

    Hi,
    i want to return in the native methode ja Java type java.awt.Dimension!
    How can I do this?
    Java code:--------------------------------------------------------------------------------
    public native java.awt.Dimension getSize()
    generating the JNI header file
    JNI header code:--------------------------------------------------------------------------------
    JNIEXPORT jobject JNICALL Java_Video_getSize(JNIEnv *, jobject)
    my c function looks like this
    code:--------------------------------------------------------------------------------
    JNIEXPORT jobject JNICALL Java_Video_getSize(JNIEnv *env, jobject obj)
    return ???????
    how can I return in C an object like jawa.awt.Dimension?
    Thx
    Ronny

    Here is my 2 cents for a way we pass data between Java and C via the Java Native Interface. This excerpt is an example of passing an int value through a locally created Integer wrapper class, which must be adapted for local use. Note that because of the wrapper, return values are not needed.
    1. Create the Java class file.
    * This class encapsulates a Java <CODE>int</CODE> primitive.
    * This class was created to allow programmers to change
    * the value of an existing integer object without being
    * forced to create a new object (as is the case with the
    * Java Integer object).
    public class LocalInteger
         private int     value;
         * Creates a LocalInteger object and initializes
         * it to <I>0</I> (the default in Java).
         public LocalInteger ()
              super ();
         * Creates a LocalInteger object and initializes
         * it using the given <I>int</I> value.
         * @param i Integer value to use in initializing
         * the object.
         public LocalInteger (int i)
              super ();
              value = i;
         * Gets the value of the object.
         * @return The value of the object.
         public int getValue ()
              return (value);
    2. Create the jni header file.
    DLL_EXTERN void jni_GetValue_from_LocalInteger(int* LocalInteger, JNIEnv *env, jobject thisLocalInteger);
    3. Create the C file.
    /*start of jni header****************************************
    *NAME/TITLE:       jni_GetValue_from_LocalInteger
    *DESCRIPTION:      This routine copies the integer value
    * from the Java LocalInteger object to the
    * C 'int' variable.
    *CALLING SEQUENCE: jni_GetValue_from_LocalInteger (LocalInteger,
    * env,
    * thisLocalInteger)
    *PARAMETERS:
    * Type Name I/O Description
    * int * LocalInteger I/O C variable
    * JNIEnv * env I JNIEnv pointer
    * jobject thisLocalInteger I Java object
    *RETURN:           N/A
    **end of header*********************************************/
    /* ********************** BEGIN CODE ********************** */
    DLL_EXPORT
    void jni_GetValue_from_LocalInteger(int* LocalInteger, JNIEnv *env, jobject thisLocalInteger)
         LocalInteger = (int) (env)->GetIntField(env, thisLocalInteger, LocalInteger_Value);

  • How can I access to the ITEM method of an activeX collection object?

    I want to communicate a program that I am developing using labview with ADO activeX objects of microsoft Access. I have download a demostration vi that implements this communication.this vi performs ok, but the problem is that I don't know how select the "item" method of a collection. Although I can copy and paste one invoke method that has selected the item method and relink it to another property, I want to know how to do it in a proper way.

    check the image first, one you drop the "invoke node" onto the diagram, either right click on it, goto "Methods" and select the one you want, or change the mouse cursor to the little hand then left click on it.
    Joe
    Attachments:
    Snap17.gif ‏5 KB
    Snap18.gif ‏4 KB

  • How can I access the protected inherited method

    Hi guys:
    I know I can use getDeclaredMethod to get some methods,but my question how can I get a protected inherited method? for example
    class A{
    protected void test(){}
    class B extends A{
    public String getValue(){}
    class C{
    public static void main(Strin[] args){
    //at here I want to access "test" method by reflection,but I dont know how?
    thanks advance!

    Indeed it does. If you want to find the declared methods of the superclass then you should be able to figure out how to do that: find the superclass, find its declared methods.

  • Can't access variables in specific S7-1200 DB's in LabVIEW project

    Hi all,
    I'm trying to establish a connection between LabVIEW and a Siemens S7-1200 though Ethernet and SIemens OPC Server.
    The physical connection is OK (I can ping S7-1200 with no problem).
    When I needed to access variables from specifics DB's inside S7-1200 ( I want to access variable DB190,X0.4), I called Siemens support and they said I had to modify the variable's definition when using OPC Scout, from "MX0.4" to "DB190,X0.4", and then it was possible to access this variable.
    Same solution (renaming the path) applies to NI OPC Client, I can read and write variables properly.
    My problem is that when I try to add variables in LabVIEW Project, I can't find those variables whose address were modified, so I can't access the correct variable in my program.
    I tried to change the variable path in Multiple Variable Editor, but it doesn't work either.
    Any suggestions on what I can try??

    First: Avoid the ODBC/JDBC Bridge if at all possible.
    It's the worst JDBC driver I've ever seen. It's buggy
    and a great hindrance both to learning and to
    producing usefull code.I agree that there might be problems with M$ Access, but there are problems with all databases, including MySQL (e.g., no referential integrity in free download version). It's capable enough for the query the OP is trying to execute.
    The problem is with his code, not Access or the bridge driver. He'll go through a lot of effort to switch databases and still have this problem. Better to understand what HE'S done wrong and fix it so he'll do it correctly for all databases, including Access.
    You just need to be more careful with your query, I'm sure.
    %

  • How can I access CAPI 2.0 methods with LabView ?

    I must use CAPI 2.0 (common ISDN interface) method with LabView (graphical interface), the work is to command a ISDN S/T card on PXI Bus, and this card support CAPI 2.0.

    This depends upon what type of interface you have to the ISDN. I assume you have either Basic Rate Interface (BRI) or Primary Rate Interface (PRI). Do you have a DLL to control it? If so, you can use the "Call Library Function Node" VI to access this DLL and just make calls to it. If you have an ActiveX Server, you can use the LabVIEW ActiveX Automation VIs to access it.
    J.R. Allen

  • How can we call java control source methods within jsp

    Hi guys!
              How can we access java control source methods that are defined in java control projects within jsp.I am getting error when I tried to call java control source's methods in scriptlet of JSP page.Any help/suggestion is appreciated.
              Thanks
              -Chandu

    Uh, what?
    (And you are sure that it's not a Weblogic-specific question?)

  • Access variables within a timer

    How can I access variables within a timer?
    I mean variables, that I can use in another class that extends applet i.e.?

    The Code can be compiled now with the Java Compiler.
    But the image won't move on the screen.
    import java.applet.*;
    import java.awt.*;
    import java.util.*;
    public class ChangingApplet extends Applet {
      private Image EricsBild;
      private int x,y;
      private TimerTask update;
      public void start() {
      EricsBild = getImage(getCodeBase(), "heuschrecke.gif");
      x=5;y=5;
        update = new TimerTask() {
          public void run() {
            if (x<300) x++;
            if (y<200) y++;
            if (x>3) x--;
            if (y>2) y--;
            repaint();
        Timer t = new Timer(false);
        t.schedule(update, 1000, 1000);
      public void stop() {
        update.cancel();
      public void paint(Graphics g) {
        g.drawImage(EricsBild,x,y,this);
    }

  • Native Method (Very Urgent).

    I am working on native methods. I followed the steps as defined by the sun:
    i- Create the Java Source File, containing the native method declaration:
    public class NativeCode
         public native void showString();
         static
              System.loadLibrary("DisplayText");
         public static void main(String [] args)
              NativeCode nc = new NativeCode();
         nc.showString();
    ii- Compile the Java Source File.
    iii- use javah -jni ClassName to create Header File.
    //The header file.
    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include <jni.h>
    /* Header for class NativeCode */
    #ifndef IncludedNativeCode
    #define IncludedNativeCode
    #ifdef __cplusplus
    extern "C"
    #endif
    * Class: NativeCode
    * Method: showString
    * Signature: ()V
    JNIEXPORT void JNICALL Java_NativeCode_showString
    (JNIEnv *, jobject);
    #ifdef __cplusplus
    #endif
    #endif
    iv- Write the implementation of native method in "C Language", using the signature as in the Header file, generated by the javah -jni option.
    // The implementation of native method in "C Language".
    //NativeMethod.c
    #include <jni.h>
    #include "NativeCode.h"
    #include <stdio.h>
    JNIEXPORT void JNICALL Java_NativeCode_showString(JNIEnv *env, jobject obj)
         printf("Hello! World");
         return;
    The problem is that when I compile the NativeMethod.c, the compiler generated the following errors:
    i- Unable to Open include file "jni.h".
    ii- Unable to Open include file "NativeCode.h"
    iii- Declaration Syntax Error.
    What should I do? What is the solution of this problem?
    Where I have to put the "jni.h" and "NativeCode.h" files?
    Please assist me in solving this problem.
    Many Buckets full of thanks!

    Hi
    You should be able to find the jni.h in :
    For Windows:
    your <java_home>\include directory. jni.h also refers to jni_md.h
    that should be present in <java_home>\include\win32 directory.
    Copy both of them to your include path.
    For Solaris:
    you should find the jni.h in the same directory but jni_md.h
    will be in <java_home>/include/solaris directory.
    The pattern follows for other UNIX flavors too.
    Hope this helps.
    cheers
    projyal
    I am working on native methods. I followed the steps
    as defined by the sun:
    i- Create the Java Source File, containing the native
    method declaration:
    public class NativeCode
         public native void showString();
         static
              System.loadLibrary("DisplayText");
         public static void main(String [] args)
              NativeCode nc = new NativeCode();
         nc.showString();
    ii- Compile the Java Source File.
    iii- use javah -jni ClassName to create Header File.
    //The header file.
    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include <jni.h>
    /* Header for class NativeCode */
    #ifndef IncludedNativeCode
    #define IncludedNativeCode
    #ifdef __cplusplus
    extern "C"
    #endif
    * Class: NativeCode
    * Method: showString
    * Signature: ()V
    JNIEXPORT void JNICALL Java_NativeCode_showString
    (JNIEnv *, jobject);
    #ifdef __cplusplus
    #endif
    #endif
    iv- Write the implementation of native method in "C
    Language", using the signature as in the Header file,
    generated by the javah -jni option.
    // The implementation of native method in "C
    Language".
    //NativeMethod.c
    #include <jni.h>
    #include "NativeCode.h"
    #include <stdio.h>
    JNIEXPORT void JNICALL
    Java_NativeCode_showString(JNIEnv *env, jobject obj)
         printf("Hello! World");
         return;
    The problem is that when I compile the
    NativeMethod.c, the compiler generated the following
    errors:
    i- Unable to Open include file "jni.h".
    ii- Unable to Open include file "NativeCode.h"
    iii- Declaration Syntax Error.
    What should I do? What is the solution of this
    problem?
    Where I have to put the "jni.h" and "NativeCode.h"
    files?
    Please assist me in solving this problem.
    Many
    Many Buckets
    Many Buckets full of thanks!

  • Access object attributes using other object JNI native method

    Hi. I'm trying to change an attribute of object O1 from another object O2 without invoking a O1 method and without making the attribute as public or protected.
    The only possibility that comes to my mind for doing so is writting a JNI native method
    public class O1 {
    static public native changeAttribute (Object O2, Object newAttributeValue) ;
    that change the attribute memory reference, but all I've found about accesing attributes in JNI is about accessing the invoker attributes (in this case, O1).
    �Does any one know if it's possible to do so? Thanks.

    I know that is not a good practice but I cannot figure out another way.
    I'll try to explain the whole problem so you see the reason. I'm working with transactions, using objects as the data. An object can be opened for write by several transactions because the granularity for conflicts is not the object, is each of its attributes. As long as two transaction don't write the same attribute, they both can write. For writing, each transactions uses a private copy of the object. At committing, the actual copy of the object must be replaced by the committer one, but as far as the granularity is the object attributes, only each written attribute must be replaced (if not, only the last commit would be visible).
    This attribute replace must be done by the transaction manager as far as the transactional object is provided by the client. So what i was thinking was to use JNI or some trick like that to replace the object attributes transparently to the object.
    I hope the explain is clear, my english is a little asleep :-(.
    How to do it with reflection? I thought that was only for method calling. Anyway, there wouldn't be problems if the attributes are private?
    Thanks for answering.
    EDIT: I've been able to change a public field using reflection, but not the private one
    import java.lang.reflect.*;
    class Caca {
    public static void main(String[] args) {
    Integer r = new Integer(0);
    System.out.println("original: " + r.toString());
    modifyWidth(r, 300);
    System.out.println("modified: " + r.toString());
    static void modifyWidth(Integer r, int newValue ) {
    Field valueField; Class c = r.getClass();
    try {
    valueField = c.getField("value");
    valueField.set(r, newValue);
    } catch (Exception e) { System.out.println(e); }
    Message was edited by:
    dfasdfsdafsadfasdf

  • Why private variables, while still can be accessed by accessor methods

    Agreed it is well defined way of encapsualtion. But i wonder how it works differently. can any one explain . We declare a varibale as private which can be accessed by accessor (set/get) methods which are usually public. so why dont we say vairbkles itself as Private ??
    Pls explain

    Not only that, but imagine the case where you have an api method, getTotal(). Your first iteratation you have something like:
    double gross;
    double net;
    double commission;
    so to get the total you may want gross - commission = net. Thus your method may look like:
    public double getTotal()
    return gross - commission;
    But later on, iteration 2 or so, you find out you need to account for taxes, so now you don't want to break the code, the result should be the same, the NET total. However, you now need to account for taxes:
    public double getTotal()
    return (gross - commission) + tax;
    Without breaking any code and all while maintaining the actual API definition, you have made a public accessor method provide more functionality. All code using the getTotal() method wont break nor has to be recompiled and even better it now takes into account tax.
    Now, there is one "sticky" issue in the above. Because the getTotal() makes direct use of "private" variables, you may not get the "right" tax. In other words, what if there is state and local tax that need to be added? You may have two variables:
    double localTax,stateTax;
    The problem is, do you want your method like this:
    public double getTotal()
    return (gross - commission) + localTax + stateTax;
    Or would it look (and possibly account for future updates) better like so:
    return (gross - commission) + getTax();
    The thing is, what if later on you have additional tax to handle? Sure, you can simply add it to the end, adding it, what ever. But by making a "helper" method of getTax(), you might have on iteration 2:
    private double getTax()
    return localTax + stateTax;
    and in iteration three, you may have:
    private double getTax()
    return localTax + stateTax + salesTax;
    Now, unless you are calling code in an intensive performance needy loop, making a couple of helper method calls won't hurt performance at all, and it will greatly enhance your code quality because you can easily change the implementation of the method(s) used, without affecting the API.

  • Exception when creating instance of a class with native method by JNI

    I am trying to use JNI - I want to have a Java class Foo have a
    method, that is a native C function.
    I follow the Sun's tutorial
    http://java.sun.com/developer/onlineTraining/Programming/JDCBook/jnie...
    exactly, and everything compiles fine, and I have compiled my C .dll
    as well (on Win XP). So I am ready to run - ...
    Now when I finally try to run the Java application, it throws this
    exception when it tries to create the Foo instance:
    at Foo.<init>(Foo.java:11)
    at
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at
    sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstruct
    orAccessorImpl.java:39)
    at
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingC
    onstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:
    513)
    at java.lang.Class.newInstance0(Class.java:355)
    at java.lang.Class.newInstance(Class.java:308)
    at sun.applet.AppletPanel.createApplet(AppletPanel.java:786)
    at sun.applet.AppletPanel.runLoader(AppletPanel.java:715)
    at sun.applet.AppletPanel.run(AppletPanel.java:369)
    at java.lang.Thread.run(Thread.java:619)
    Caused by: java.security.AccessControlException: access denied
    (java.lang.Runtim
    ePermission loadLibrary.Foo)
    Why would this be so??? Thank you for your insights

    Mark_Galeck wrote:
    I am trying to use JNI - I want to have a Java class Foo have a
    method, that is a native C function.
    I follow the Sun's tutorial
    http://java.sun.com/developer/onlineTraining/Programming/JDCBook/jnie...
    exactlyNot quite exactly. Yours is an applet, theirs is an application.
    Applets are not allowed many things that applications can do.
    Among them, loading native libraries.

  • Accessing a native method from within a packaged class

    I have seen some very useful information from RPaul. However, I can not quite get it to work.
    I have a class "JNIGetUserId" that is in a package "com.services.localoptions". I am trying to call a native method from a dll. it works fine at the default package level. But not in the package. I have tried adding the "_" between each level of the directory in the h and c++ files. I also found that doing a javah at the top of the package structure it includes some information in the h file. A "_0005" shows up between each level.
    This is on Windows XP. I am also using VisualAge for Java. I also am using JDK 1.3.1.
    The source files:
    package com.services.localoptions;
    * This class provides the JNI Interface to call the
    * AD User Maintainence routines.
    * These routines are stored in the JNIGetUserIdLibrary.dll.
    * The routines are:
    * <ul>
    * <li>getUser - returns a string containing the User Id
    * <eul>
    * @author: Ray Rowehl
    * @date (10/15/2003 10:30:59 AM)
    public class JNIGetUserId
         // Load the library
         static
         try
              System.out.println("loading dll");
         System.loadLibrary("JNIGetUserIdLibrary");
         System.out.println("loaded dll");
         catch (UnsatisfiedLinkError ue)
              System.out.println("Link Error");
    * native C++ method to call getUserId routine
    public native String getUser() throws Exception;
    * This method allows us to test standalone..
    * Creation date: (10/16/2003 2:08:58 PM)
    * @param args java.lang.String[]
    public static void main(String[] args)
         try
              System.out.println("Trying method 3");
              JNIGetUserId lGUD = new JNIGetUserId();
              System.out.println(lGUD.getUser());
         catch (Exception e)
              System.out.println("Got an exception " + e);
              e.printStackTrace();
    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include <jni.h>
    /* Header for class JNIGetUserId */
    #ifndef IncludedJNIGetUserId
    #define IncludedJNIGetUserId
    #ifdef __cplusplus
    extern "C" {
    #endif
    * Class: JNIGetUserId
    * Method: getUser
    * Signature: ()Ljava/lang/String;
    JNIEXPORT jstring JNICALL Java_com_localoptions_JNIGetUserId_getUser
    (JNIEnv *, jobject);
    #ifdef __cplusplus
    #endif
    #endif
    // Implements method to return a string to Java
    // C++ core header
    #include <iostream.h>
    // header from Java Interface
    #include "JNIGetUserId.h"
    #include "JNIGetUserId2.h"
    // returns a string back to Java for package structure
    JNIEXPORT jstring JNICALL Java_com_services_localoptions_JNIGetUserId_getUser
    ( JNIEnv * env, jobject thisObject )
         // set up constant user id for testing return
         char* userid = "RROWEHLP";
         // return userid to caller
         return env->NewStringUTF( userid );     
    // returns a string back to Java for flat structure
    JNIEXPORT jstring JNICALL Java_JNIGetUserId_getUser
    ( JNIEnv * env1, jobject thisObject1 )
         // set up constant user id for testing return
         char* userid1 = "RROWEHL1";
         // return userid to caller
         return env1->NewStringUTF( userid1 );     
    }

    Ok. A co-worker figured it out for me. The key thing is to do "javah com.services.localoptions.JNIGetUserId". Note the use of "." instead of "\". Running on windows, I was used to doing "\". That was part of the problem. Another key is doing the javah at the top of the package structure. This was mentioned in a post over at IBM.
    We got our JNI stuff working now. thanks, ray.

  • Why only final variables can be accessed in an inner class ?

    Variables declared in a method need to declared as final if they are to be accessed in an inner class which resides in that method. My question is...
    1. Why should i declare them as final ? What's the reason?
    2. If i declare them as final, could they be modified in inner class ? since final variables should not modify their value.

    (Got an error posting this, so I hope we don't end up with two...)
    But what if i want to change the final local variable within that method instead of within anonymous class.You can't. You can't change the value of a final variable.
    Should i use same thing like having another local variable as part of method and initializing it with the final local variable?You could do. But as in the first example I posted you are changing the value of the nonfinal variable not the final one. Because final variables can't be changed.
    If so, don't you think it is redundant to have so many local variables for so many final local variables just to change them within that method?If you are worried that a variable might be redundant, don't create it. If you must create it to meet some need then it's not redundant.
    Or is there any alternate way?Any alternate way to do what?

  • How to access an object's variable from native code

    i am passing an object in a native method.i have to change the value of the object's variable.how do i access the variable of object and assign it new value from c++ code.when i try to access it i get a message that the variable must have a class/sruct/union type.
    pl. help.

    I'll tell You if You send me the structure of this object in Java. And a name of field what are You thinking about.
    Maciek

Maybe you are looking for