in reply to Re: Using XML::Saxon::XSLT2 Errors
in thread Using XML::Saxon::XSLT2 Errors

Monks,

in a rather solipstic continuation of solving this problem, I document the following for future stranded adepts.

First, see what the developer of XML::Saxon::LibXSLT2 has to say on Stackoverflow

Make sure to follow his advise verbosely. As, e.g., for the notorius saxon9he.jar, the developer has used version 9.5.1.7. If you use a version from 9.6. onwards you will get a "depricated" warning in the tests mentioned below. After replacing the recent saxon9he.jar with an earlier version this warning vanishes.

Testing the mainly concerned modules independently is enlighting (take, e.g., XML::Saxon::XSLT2 testcase or the "Synopsis" from Inline::Java.

I run this tests on my local PC (Ubuntu 14.04.4 LTS: trusty) and on my server (Ubuntu 12.04.5 LTS: precise). On trusty I installed the concerned modules from the repositories, on precise I installed the concerned modules manually (make file and CPAN).

On trusty both modules work as expected, on precise the tests first result in a server error when calling the testfunction with the browser.

"Couldn't find an appropriate DIRECTORY for Inline to use"

Clear. Inline::Java generates at first run the directory "_Inline" in order to its magic. See "The Inline 'directory'" in Inline. By attributing appropriate permissions to the _Inline directory this particular server error vanishes. (I attributed "drwxrwxrwx".)

With this, the test is successfull from the terminal. But while on trusty the output is printed as desired, on precise the terminal prints "XML::LibXML::Document=SCALAR(0x2a0d6f8)" instead and by calling the testfunction with the browser I stuck again with the error:

"Can't locate object method "new" via package "XML::Saxon::XSLT2::Transformer ... XSLT2.pm, line 53, line 6".

Line 53 of XSLT2.pm reads:

return bless { 'transformer' => XML::Saxon::XSLT2::Transformer->new($xslt) }, $class;

It looks like the java function in XSLT2.pm, line 377 is not accessed porperly. But why?

TobyInk, the developer of the module mentions in his comment on stackoverflow (see link above), that the JAVA_HOME environment is needed to be set.

"echo $JAVA_HOME" remains silent on both, trusty and precise. However, I set JAVA_HOME anyway (with this how to). Still, the same error.

Any help greatly appreciated.

Replies are listed 'Best First'.
Re^3: Using XML::Saxon::XSLT2 Errors
by perlfan (Parson) on Mar 10, 2016 at 16:31 UTC
    Stupid question, but is java even installed?
      Every reply is highly welcome. java -version:
      java version "1.8.0_74" Java(TM) SE Runtime Environment (build 1.8.0_74-b02) Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode)
Re^3: Using XML::Saxon::XSLT2 Errors
by Anonymous Monk on Jun 30, 2017 at 12:24 UTC

    I had also the error like "Can't locate object method "new" via package "XML::Saxon::XSLT2::Transformer ... XSLT2.pm ..."

    In my case the problem was that the XSLT2 related code was located in a .pm module.

    The error disappeared when I added use XML::Saxon::XSLT2; not only to the .pm module but also into the main perl script.