[vtkusers] vtkPanel.java and packages

Phil Cook p.cook at cs.ucl.ac.uk
Tue Apr 30 11:43:03 EDT 2002


This from the archives of Feb 02:


> Hi Jason,
> The native methods get mangled in a certain way so that java can find 
> them  The method is defined in libvtkCommonJava.so as 
> Java_vtkPanel_SetSizeInternal(...) (see vtkJavaAwt.h).  Because you put 
> vtkPanel into a package, java is looking for somtehing like 
> Java_vtk_vtkPanel_SetSizeInternal(...).  You can see exactly which 
> method java is looking for if you type 'javah -jni vtkPanel'.  Because 
> of the way vtk is built, you cannot put vtkPanel into a package.  Take 
> the package declaration out of vtkPanel and change your other code to 
> look for vtkPanel, not vtk.vtkPanel.  Of course, vtkPanel needs to be 
> somewhere in your CLASSPATH...
> -Jeff
> 
> Rodrigues, Jason (MED) wrote:
> 
> >  
> > Hye all,
> >
> > I downloaded vtk4.0 for upgrading my vtkPrograms to new vresion from the
> >site, but  found that vtk.vtkPanel didnt exist in that package. so made a
> >separate packeg just for vtkPanel. Now Whenever I call this vtkPanel from
> >that Package  It throws me an unsatisfied linker error as below.
> >
> >
> >java.lang.UnsatisfiedLinkError: SetSizeInternal
> >	at vtktmp.vtkPanel.SetSizeInternal(Native Method)
> >	at vtktmp.vtkPanel.setSize(vtkPanel.java:62)
> >	at vtkexample.<init>(vtkexample.java:11)
> >	at vtkexample.main(vtkexample.java:26)
> >
> >Following was the place where there was a native call for setting the Size
> >of the vtkPanel
> >  private native void RenderCreate(vtkRenderWindow id0);
> >  private native void RenderInternal(vtkRenderWindow id0);
> >  private native void SetSizeInternal(vtkRenderWindow id0, int x, int y);
> >
> >
> >Thought The vtkPanel class had sucessfully loaded the libraries int the
> >vtkPanel program,
> >               System.loadLibrary("vtkCommonJava"); 
> >               System.loadLibrary("vtkFilteringJava");
> >               System.loadLibrary("vtkIOJava");
> >               System.loadLibrary("vtkImagingJava");
> >               System.loadLibrary("vtkGraphicsJava");
> >               System.loadLibrary("vtkRenderingJava");
> >the above linker error still existed.
> > Can anybody tell me what other things I need to include other than the
> >vtkLibraries? If I have to build other dependencies where do I get those dll
> >making 'make" files?
> >
> >
> >Anticipating your solution at the earliest,
> >Regards,
> >JASON RODRIGUES
> >
> >
> >"THIS E-MAIL MESSAGE ALONG WITH ANY ATTACHMENTS IS INTENDED ONLY FOR THE
> >ADDRESSEE and may contain confidential and privileged information.
> >If the reader of this message is not the intended recipient,
> >you are notified that any dissemination, distribution or copy of this 
> >communication is strictly Prohibited. 
> >If you have received this message by error, please notify us 
> >immediately, return the original mail to the sender and delete the 
> >message from your system."
> >
> >_______________________________________________
> >This is the private VTK discussion list. 
> >Please keep messages on-topic. Check the FAQ at: <http://public.kitware.com/cgi-bin/vtkfaq>
> >Follow this link to subscribe/unsubscribe:
> >http://public.kitware.com/mailman/listinfo/vtkusers
> >
> >
> 
> 

I have done as Jeff suggested, but my Java compiler (Sun JDK v1.4.0 for Win32) won't 
recognise unpackaged classes. Although I have put \vtk40\wrapping\java on the 
classpath, I get "Cannot resolve symbol" when attempting to instantiate vtkPanel 
objects. 

I have used packages for all my code, and if I put vtkPanel into any of my packages (or 
into the vtk package), it can be found by the compiler. But then I get the same runtime 
problems as Jason had.

Has anyone else come across this problem? 

Thanks,


Phil



More information about the vtkusers mailing list