Hi list,

I am new to Inline::Java. I have some problems when using Inline::Java.

I have PKG1.pm which is an adapter between jar and pm.

---------- PKG1.pm ----------
package PKG1;

use strict;
use warnings;

BEGIN {
    $ENV{CLASSPATH} .= ":/path/to/my.jar";
    $ENV{PERL_INLINE_DIRECTORY} = '/path/to/.Inline/';
}

use Inline Java => "DATA";

sub new
{
    my $class = shift;
    return  PKG1::PKG1->new(@_);
}

1;

__DATA__
__Java__
import java.util.*;
import java.io.*;
import ...;

public class PKG1 {
.....

--------- PKG1 END ----------

When I call this PKG1 directly from test1.pl, eg 'perl test1.pl', it
works just fine.

---- test1.pl ---------
#!/usr/bin/perl

use strict;
use warnings;
use PKG1;

my $test = PKG1->new($arg1, $arg2, $arg3);
....
-------- test1.pl END ---------


However, If I use PKG1 from PKG2 which is another PM loaded by a main
program, it didn't work at all.

---- PKG2.pm -------
package PKG2;

$|=1;
use strict;
use PKG1;

sub new
{
    my $self = {};
    bless $self;
}

sub callpkg1
{
        my $test = PKG1->new($arg1, $arg2, $arg3);
        .....
}

sub send
{
   my $self = shift;
   callpkg1(@_);
   ...
}
1;
--------- PKG2.pm END ------

test2.pl call PKG2, PKG2 call PKG1.

------- test2.pl -----------
require PKG2.pm;
my $test2 = new PKG2;
$test2->send($arg1, $arg2, $arg3);
....
------ test2.pl END ----

perl test2.pl didn't work.


I turn on the DEBUG o 5, it seems that Inline::Java hung at:

Thu Dec 16 04:12:59 2004 : [perl][3]   match successful: score is 6
Thu Dec 16 04:12:59 2004 : Wide character in print at
/usr/lib/perl5/site_perl/5.8.0/i586-linux-thread-multi/Inline/Java.pm
line 1049.
Thu Dec 16 04:12:59 2004 : [perl][3]   creating object new PKG1(000,
8613701063045, "test")
Thu Dec 16 04:12:59 2004 : [perl][3]   packet sent is create_object
PKG1 (java.lang.String,java.lang.String,java.lang.String)
scalar:48.48.48 scalar:56.54.49.51.55.48.49.48.54.51.48.52.53
scalar:67.77.32.20013.25991.26631.39064
Thu Dec 16 04:12:59 2004 : [java][3]   packet recv is create_object
PKG1 (java.lang.String,java.lang.String,java.lang.String)
scalar:48.48.48 scalar:56.54.49.51.55.48.49.48.54.51.48.52.53
scalar:67.77.32.20013.25991.26631.39064

and sometimes at:

Thu Dec 16 04:12:59 2004 : [java][4]    class PKG1 is reference
Thu Dec 16 04:12:59 2004 : [java][3]   found a PKG1 constructor
Thu Dec 16 04:12:59 2004 : [java][3]  
(java.lang.String,java.lang.String,java.lang.String) =
(java.lang.String,java.lang.String,java.lang.String)?
Thu Dec 16 04:12:59 2004 : [java][3]   has matching signature
(java.lang.String,java.lang.String,java.lang.String)
Thu Dec 16 04:12:59 2004 : [java][4]    arg 0 of signature is java.lang.String
Thu Dec 16 04:12:59 2004 : [java][4]    class java.lang.String is
primitive string
Thu Dec 16 04:12:59 2004 : [java][4]    args is scalar -> forcing to
java.lang.String
Thu Dec 16 04:12:59 2004 : [java][1] loading InlineJavaUserClassLink
via InlineJavaUserClassLoader
Thu Dec 16 04:12:59 2004 : [java][4]     result is 000
Thu Dec 16 04:12:59 2004 : [java][4]    arg 1 of signature is java.lang.String
Thu Dec 16 04:12:59 2004 : [java][4]    class java.lang.String is
primitive string

Any idea? Thanks very much.

Reply via email to