|
From: <php...@li...> - 2006-03-13 10:26:02
|
Hi,
I am using PHP-Java-bridge like this :
Report.java : is a java file containning a wrapper to JasperReports=20
notaly the following imports and method :
import net.sf.jasperreports.engine.*;
[...]
public void setSubReport(String name, String compressed_xml) throws=20
JRException {
InputStream stream =3D this.readCompressedXml(compressed_xml)=
;
//compile into a JasperReport object
JasperReport jasperReport =3D=20
JasperCompileManager.compileReport(stream);
//add to subreports map
_subreports.put(name, jasperReport);
}
Now in php, I use Report.php :
$p =3D $GLOBALS['CONF']['SYS']['INCLUDE_PATH']['libraries'].'java/lib/';
$javapath =3D=20
$p.'commons-beanutils-1.5.jar;'.$p.'commons-collections-2.1.jar;'.
$p.'commons-digester-1.7.jar;'.$p.'commons-logging-1.0.2.jar;=
'.
$p.'commons-logging-api-1.0.2.jar;'.$p.'itext-1.3.1.jar;'.
$p.'jasperreports-1.2.0.jar;'.$p.'jcommon-1.0.0.jar;'.
=20
$p.'jfreechart-1.0.1.jar;'.$p.'poi-2.0.jar;'.$p.'xalan.jar;'.$p.'../repor=
t/Report.jar';
java_set_library_path($javapath);
try {
$r =3D new Java('Report');
$r->setSubReport($name, $row['sr_compressed_xml']);
} catch (JavaException $ex) {
$trace =3D new java("java.io.ByteArrayOutputStream");
$ex->printStackTrace(new java("java.io.PrintStream", $trace));
die("<pre>java stack trace: $trace</pre>");
}
So now, this print the following error (snippet) :
Package not found : net.sf.jaspereports.engine line XX in master12345.jav=
a
(Note: the line JasperCompileManager.compileReport(stream); is the=20
bottom of the stacktrace).
This means that my Java class perfectly imports the package (because it=20
can call the JasperCompileManager.compile method) but the java classes=20
generated on the fly by Jasper (here named master12345) cannot use the=20
jars set in the javapath.
I digg into the source code and see that a new thread is opened for the=20
compilation : maybe this is the problem (related to the class loader in=20
php-java-bridge I think ?).
Plus, putting the jars into jdk/jre/lib/ext works, so this prove that it=20
should be a problem with the class loader.
Note that doing this (jars in lib/ext) is not really an option for a=20
production environment...
I hope you can help me to find a workaround for my situation;
best regards and keep on the good work,
chris
--=20
=20
_________________________________________________________________________=
______________
Tennaxia, www.tennaxia.com,
Pilotez vos obligations environnementales
_________________________________________________________________________=
______________
Si=E8ge social :
6, rue L=E9onard de Vinci - 53001 Laval Cedex -=20
T=E9l : 02 43 49 75 50 - Fax : 02 43 49 75 77
Agence Paris :
19, rue r=E9aumur - 75003 Paris -=20
T=E9l : 01 42 77 04 19 - Fax : 08 25 19 19 61
Agence Lyon :
Parc du Chater - 63 rue de la garenne - 69340 FRANCHEVILLE -=20
T=E9l : 04 72 39 98 14 - Fax : 04 72 39 93 85
Les informations contenues dans ce message envoy=E9es par TENNAXIA sont c=
onfidentielles et
sont =E9tablies =E0 l'attention exclusive de leurs destinataires. L'acc=E8=
s =E0 ce message
par toute autre personne n'est pas autoris=E9. Si vous n'=EAtes pas le de=
stinataire de ce
message, merci de le d=E9truire et d'en avertir l'exp=E9diteur : toute al=
t=E9ration, copie,
distribution ou toute action prise ou omise sont interdites et peuvent =EA=
tre ill=E9gales.
The information in this message sent by TENNAXIA is confidential and may =
be legally
privileged. It is intended solely for the addressee(s). Access to this me=
ssage by anyone
else is unauthorized. If you are not the intended recipient, please delet=
e it and notify
the sender : any disclosure, copying, distribution or any action taken or=
omitted to be
taken in reliance on it, is prohibited and may be unlawful.
|