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. |