Discussion:
JDBC.pm no longer works with Inline::Java?
Russ Tremain
2012-08-26 06:43:10 UTC
Permalink
Hi,

I've been trying to install Inline::Java with JDBC for several hours.

I cannot get the JDBC tests to pass. Here is the error:

tanami{jdbcpm.41} Build test
t/00-load.t ....... 1/1 # Testing JDBC 0.01, Perl 5.010000, /usr/bin/perl
t/00-load.t ....... ok
t/01-driver.t ..... 1/4 Can't locate object method
"__validate_prototype" via package "JDBC" at (eval 27) line 344,
<GEN6> line 5.
# Looks like you planned 4 tests but ran 1.
# Looks like your test exited with 9 just after 1.
t/01-driver.t ..... Dubious, test returned 9 (wstat 2304, 0x900)
Failed 3/4 subtests
t/02-connect.t .... 1/3 Can't locate object method
"__validate_prototype" via package "JDBC" at (eval 27) line 436,
<GEN6> line 5.
# Looks like you planned 3 tests but ran 1.
# Looks like your test exited with 9 just after 1.
t/02-connect.t .... Dubious, test returned 9 (wstat 2304, 0x900)
Failed 2/3 subtests
t/02-const.t ...... ok
t/03-statement.t .. 1/3 Can't locate object method
"__validate_prototype" via package "JDBC" at (eval 27) line 436,
<GEN7> line 5.
# Looks like you planned 3 tests but ran 1.
# Looks like your test exited with 9 just after 1.
t/03-statement.t .. Dubious, test returned 9 (wstat 2304, 0x900)
Failed 2/3 subtests
t/pod-coverage.t .. skipped: Test::Pod::Coverage 1.04 required for
testing POD coverage
t/pod.t ........... ok


I'm on OSX 10.6 running perl 5.10.0.

Never had trouble with this before. I have tried it with both JDK
1.5 and JDK 1.6 for the java home.

It appears to me that the java.sql classes are not getting
initialized correctly during the "study" phase.

Could it be something to do with the later version of Perl? When I
had this working I was using 5.8.x I believe.

I'm not getting past the DriverManager, which is setup in the JDBC preamble:

----------------------------------------------------------------
package JDBC;

use warnings;
use strict;

our $VERSION = '0.01';

our @ISA = qw(Exporter java::sql::DriverManager);

{ # the Inline package needs to be use'd in main in order to
# get the studied classes to be rooted in main
package main;
use Inline ( Java => q{ }, AUTOSTUDY => 1 );
}

use Inline::Java qw(cast caught study_classes);

our @EXPORT_OK = qw(cast caught study_classes);
...
----------------------------------------------------------------


the test that are failing are attempting to call methods in
java.sql.DriverManager.

I assume that __validate_prototype is some internal method kept by
Inline::Java ...

Any help appreciated.. I'm trying to revive my sql command line
manager that uses this.

thanks!
-Russ
Russ Tremain
2012-08-30 21:22:34 UTC
Permalink
I was able to get past this by reverting to perl 5.8.9 from macports.

I have 2 other machines running leopard (mac osx 10.5.8) that had no trouble, using perl 5.8.8.
However 5.10.0 (default on osx 10.6.8) was a no-go.

The Inline::Java tests pass on either, but JDBC.pm provokes errors, which makes me wonder if the Inline::Java tests have enough coverage. I don't think that JDBC is doing anything unusual, just loading more classes.

-Russ
Post by Russ Tremain
Hi,
I've been trying to install Inline::Java with JDBC for several hours.
tanami{jdbcpm.41} Build test
t/00-load.t ....... 1/1 # Testing JDBC 0.01, Perl 5.010000, /usr/bin/perl
t/00-load.t ....... ok
t/01-driver.t ..... 1/4 Can't locate object method "__validate_prototype" via package "JDBC" at (eval 27) line 344, <GEN6> line 5.
# Looks like you planned 4 tests but ran 1.
# Looks like your test exited with 9 just after 1.
t/01-driver.t ..... Dubious, test returned 9 (wstat 2304, 0x900)
Failed 3/4 subtests
t/02-connect.t .... 1/3 Can't locate object method "__validate_prototype" via package "JDBC" at (eval 27) line 436, <GEN6> line 5.
# Looks like you planned 3 tests but ran 1.
# Looks like your test exited with 9 just after 1.
t/02-connect.t .... Dubious, test returned 9 (wstat 2304, 0x900)
Failed 2/3 subtests
t/02-const.t ...... ok
t/03-statement.t .. 1/3 Can't locate object method "__validate_prototype" via package "JDBC" at (eval 27) line 436, <GEN7> line 5.
# Looks like you planned 3 tests but ran 1.
# Looks like your test exited with 9 just after 1.
t/03-statement.t .. Dubious, test returned 9 (wstat 2304, 0x900)
Failed 2/3 subtests
t/pod-coverage.t .. skipped: Test::Pod::Coverage 1.04 required for testing POD coverage
t/pod.t ........... ok
I'm on OSX 10.6 running perl 5.10.0.
Never had trouble with this before. I have tried it with both JDK 1.5 and JDK 1.6 for the java home.
It appears to me that the java.sql classes are not getting initialized correctly during the "study" phase.
Could it be something to do with the later version of Perl? When I had this working I was using 5.8.x I believe.
----------------------------------------------------------------
package JDBC;
use warnings;
use strict;
our $VERSION = '0.01';
{ # the Inline package needs to be use'd in main in order to
# get the studied classes to be rooted in main
package main;
use Inline ( Java => q{ }, AUTOSTUDY => 1 );
}
use Inline::Java qw(cast caught study_classes);
...
----------------------------------------------------------------
the test that are failing are attempting to call methods in java.sql.DriverManager.
I assume that __validate_prototype is some internal method kept by Inline::Java ...
Any help appreciated.. I'm trying to revive my sql command line manager that uses this.
thanks!
-Russ
Loading...