Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re: Inline::Java Question

by tobyink (Abbot)
on Jan 19, 2012 at 21:33 UTC ( #948850=note: print w/ replies, xml ) Need Help??


in reply to Inline::Java Question

I used it in XML::Saxon::XSLT2. Try using that (you'll need the Java Saxon XSLT library) and see where it gets you.

It's a while since I wrote that, but I'd be happy to answer any specific questions.


Comment on Re: Inline::Java Question
Re^2: Inline::Java Question
by wpflum (Initiate) on Feb 03, 2012 at 17:30 UTC
    Your code itself didn't help but it showed me that I needed to look into the INLINE parts first so I dug into the INLINE help and pretty much got the interface working. I am having another problem though, I need to use a java IMAGE object in the code I'm writing. What I need to do is read in an image file and pass it to the java driver. To do this when I couldn't figure out the actual format of the IMAGE object I wrote a small java class than imported the java IMAGE handling routines and let me get the IMAGE object in return for giving it the filename. I made sure this worked by dropping it into the original java test program given to me by the hardware company and the concept works just like it should. Now I used INLINE Java to use the class I made to read in the image file into a variable but when I try to send the variable to the java class that handles the hardware interface I'm getting the following error.

    main::java::lang::IllegalArgumentException=HASH(0x9a82f58)

    I'm guessing that something doesn't like the format being returned from the class to read the file but I'm not sure what I can do to force this to work. Any Ideas?
      I was able to drop the external class I made to interface to the awt class in java but I still get an error when it tries to send the image object to the java class to load it. I can actually print the object $image and I get InLine::Java::Object=HASH(0x94da3a8) Here is the code:
      #!/usr/bin/perl use strict; use warnings; use Inline (Java => 'STUDY', CLASSPATH => '/usr/share/java/RXTXcomm.jar:/home/billp/Deskt +op/perl/SigPlus2_57.jar:/home/billp/Desktop/perl/rt.jar', STUDY => ['com.topaz.sigplus.SigPlus','java.awt.Image'], AUTOSTUDY =>1); use Inline Java => <<EOJ; import java.awt.*; public class ADMLibrary{ public Image GetJavaImageObject(String Filename) { return Toolkit.getDefaultToolkit().getImage(Filename); } } EOJ my $filename = "/home/billp/Desktop/perl/Screen2.jpg"; my $adm = new ADMLibrary(); my $image = $adm->GetJavaImageObject($filename); my $sigobj = new com::topaz::sigplus::SigPlus(); $sigobj->lcdWriteImage(0, 2, 3, 46, 233, 24, $image); 1;
      Any Suggestions??

        My general advice when using Inline is to keep data passed between Perl and the other language as simple as possible. Passing a Perl object to a Java object as a method parameter is doable, but seems advisable. I tried to make sure I was only passing strings through to Java.

        Clearly some Java classes expect more complex data structures to be passed to them - but you write wrappers for those, and do (for example) JSON encoding/decoding at each end.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://948850]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (6)
As of 2015-07-05 10:51 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (61 votes), past polls