Ya esta disponible para la descarga el Release Candidate 2 de PHP-JRU 0.1, en el que se depura ciertos errores y se agregan funciones para generar formatos como html y odt.
Se ha visto mucho que al usar JAVA/Bridge 5 suele generara errores, muy probablemente sea porque no se ha configurado correctamente , para esto amplio un poco mas la explicación de como instalar y configurar Java/Bridge en el manual de uso.
http://kensai.serveblog.net/
Hola.
Me alegra que saques una nueva versión.
Yo sigo intentando usar esta librería.
Como ya te comenté en el post anterior instalé java-bridge usando un .deb, y siguiendo el link que me pusiste he conseguido que reconozca el home de java. Pero sigo teniendo problemas con require_once().
Según la documentación hay que descomprimir JavaBridge.jar que se encuentra en /usr/lib/php5. En mi caso se encuentra en /usr/lib/php5/20060613+lfs, pero no entiendo que es lo que hay que hacer al decir “descomprimir”. No tengo mucha idea de java.
He puesto este código:
runReportToPdfFile(“listado_soportes”, “listado.pdf”, $parameters, $con);
?>
y este es el resultado:
Parse error: syntax error, unexpected ‘}’ in /usr/lib/php5/20060613+lfs/JavaBridge.jar on line 502
A ver si salgo ya del atasco, que tengo ganas de usar esto.
Gracias por todo.
No se porqué el código no se ve bien. Lo pego de nuevo.
runReportToPdfFile(“listado_soportes”, “listado.pdf”, $parameters, $con);
?>
joerrrr.
Ahora sin las etiquetas de php
require(‘php-jru/php-jru.php’);
require_once(‘/usr/lib/php5/20060613+lfs/JavaBridge.jar’);
$jru= new JRU();
#$jru->loadDirLibrary(“php-jru/jars”);
$con= new JdbcConnection(“org.postgresql.Driver”,”aldiges”,”pablo”,”capgirall”);
$parameters= new java(“java.util.HashMap”);
$jru->runReportToPdfFile(“listado_soportes”, “listado.pdf”, $parameters, $con);
lo que tienes que descomprimir es el archivo java.inc y dicho archivo incluirlo dentro de tu script con require_one()
lo que tienes que hacer es descomprimir es el archivo java.inc y dicho archivo incluirlo dentro de tu script con require_one()
Hola,
Me sucede algo extraño, luego de insertar el código php para llamar al reporte, previamente compilado con iReport 3.0, se genera el archivo .pdf pero en blanco. He intentado varios días modificando cosas, cambiando versión el iReport y dejando sólo un texto que diga “hola mundo”, pero siempre genera el archivo pdf en blanco.
¿Me Puedes ayudarme a orientar lo que está sucediendo por favor?
Pues quizás debas revisar que le estés pasando correctamente los parámetro y que estas indicando la conexión a la base de datos
Puede ser, sin embargo el reporte para probar que hice contiene simplemente un cuadro de texto que dice “Hola Mundo” y sin ninguna conexión a la BD, ¿aun así es necesario establecer la conexión BD?
Este es el código que utilizo para hacer el llamado:
// INICIO
require(“/usr/lib/php/modules/Java.inc”);
require(“php-jru.php”);
$jasperReportsLib = “/vhost/webiste/jars/”;
$jru = new JRU();
$jru->loadDirLibrary($jasperReportsLib);
$parameters = new java (“java.util.HashMap”);
$jru->runReportToPdfFile(“/vhost/website/reporte1.jasper”,”/vhost/website/reporte.pdf”,$parameters,null);
// ***
Al ejecutar esta página NO genera errores en ninguna parte y crea un archivo llamado “reporte.pdf”, entonces al revisar el contenido de ese reporte aparece en blanco.
Muchas gracias por tu ayuda!
Si es necesario indicar la conexión a la base datos, de lo contrario solo se generaría un reporte estático el cual no es necesario generarlo desde código, sin embargo seria útil para realizar pruebas por lo que tomare en cuanta esto para el próximo release.
Hola.
Hace tiempo que sigo probando esto sin exito.
Esta vez tengo bien configurado el módulo java-bridge:
java support Enabled
java bridge 5.2.2
java.java_home /usr/lib/jvm/java-6-sun
java.java /usr/lib/jvm/java-6-sun/jre/bin/java
java.log_file
java.log_level no value (use back-end’s default level)
java.security_policy Off
java command JAVA_HOME=/usr/lib/jvm/java-6-sun LD_LIBRARY_PATH=/usr/lib/php5/20060613+lfs: /usr/lib/jvm/java-6-sun/jre/bin/java -Djava.library.path=/usr/lib/php5/20060613+lfs -Djava.class.path=/usr/lib/php5/20060613+lfs/JavaBridge.jar -Djava.awt.headless=true -Dphp.java.bridge.base=/usr/lib/php5/20060613+lfs php.java.bridge.Standalone LOCAL:@java-bridge-cc5 2
java server @java-bridge-cc5
java status running
He descargado php-jru-0.1RC2
Esto es lo que tengo en el directorio web:
clientes.jasper
clientes.jrxml
index.php
php-jru/
jars/
JdbcConnection.php
license.txt
php-jru.php
El contenido del archivo index.php:
loadDirLibrary(“php-jru/jars/”);
$con= new JdbcConnection(“org.postgresql.Driver”,”jdbc:postgresql://localhost/database”,”usuario”,”contraseña”);
$parameters= new java(“java.util.HashMap”);
$jru->runReportToPdfFile(“clientes.jasper”, “listado.pdf”, $parameters, $con->getConnection());
?>
Y el resultado:
Fatal error: Uncaught [[o:Exception]:”java.lang.Exception: CreateInstance failed: new org.altic.jasperReports.JdbcConnection. Cause: java.lang.ClassNotFoundException: Could not find org.altic.jasperReports.JdbcConnection in java_require() path. Please check the path and the SEL and File permissions. VM: 1.6.0_13@http://java.sun.com/” at: #-10 php.java.bridge.DynamicJavaBridgeClassLoader.loadClass(DynamicJavaBridgeClassLoader.java:278) #-9 java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) #-8 java.lang.Class.forName0(Native Method) #0 /usr/share/php/Java.inc(265): java_ThrowExceptionProxyFactory->getProxy(8, NULL, false) #1 /usr/share/php/Java.inc(417): java_Arg->getResult(false) #2 /usr/share/php/Java.inc(420): java_Client->getWrappedResult(false) #3 /usr/share/php/Java.inc(602): java_Client->getInternalResult() #4 /usr/share/php/Java.inc(1956): java_Client->createObject(‘org.altic.jaspe…’, Array) #5 /home/pablo/descargas/javabridge/php-jru/JdbcConnection.php(66): Java->Java(‘org.altic.jaspe…’) #6 /home/pa in /usr/share/php/Java.inc on line 228
Espero me puedas ayudar, pues ya estoy desesperado con esto.
Se me ha olvidado decir que jars JdbcConnection.php license.txt php-jru.php están dentro del directorio php-jru.
No se porque el contenido de index.php, no se ha pegado bien.
Lo vuelvo a poner:
require(‘php-jru/php-jru.php’);
require_once(‘Java.inc’);
$jru= new JRU();
$jru->loadDirLibrary(“php-jru/jars/”);
$con= new JdbcConnection(“org.postgresql.Driver”,”jdbc:postgresql://localhost/aldiges”,”pablo”,”capgirall”);
$parameters= new java(“java.util.HashMap”);
$jru->runReportToPdfFile(“clientes.jasper”, “listado.pdf”, $parameters, $con->getConnection());
te comento algunas cosas que seguro te ayudaran:
* Existe un jar que es super necesario y que debes verificar que este dentro de del directorio de jars, este es alticJasper.jar..
* Debes de verificar los permisos de la carpeta de jar, asegurarte de tener los permisos de lectura.
* Luego prueba indicando la ruta completa del directorio que contiene los jar.. (Solo para verificar que no hay alguna error el a ruta)
Hola.
alticJasper.jar, está, los permisos son 777.
Lo he puesto así:
require(‘php-jru/php-jru.php’);
require_once(‘Java.inc’);
$jru= new JRU();
$jru->loadDirLibrary(“/home/pablo/descargas/javabridge/php-jru/jars/”);
$con= new JdbcConnection(“org.postgresql.Driver”,”jdbc:postgresql://localhost/basedatos”,”usuario”,”contraseña”);
$parameters= new java(“java.util.HashMap”);
$jru->runReportToPdfFile(“clientes.jasper”, “listado.pdf”, $parameters, $con->getConnection());
Y el error ahora es otro.
java stack trace: java.lang.Exception: Invoke failed: [[o:JasperRunManager]]->runReportToPdfFile((o:String)[o:String], (o:String)[o:String], (i:Map)[o:HashMap], (i:Connection)null). Cause: net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: clientes.jasper VM: 1.6.0_13@http://java.sun.com/
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:75)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:232)
at net.sf.jasperreports.engine.JasperRunManager.runReportToPdfFile(JasperRunManager.java:122)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at php.java.bridge.JavaBridge.Invoke(JavaBridge.java:1063)
at php.java.bridge.Request.handleRequest(Request.java:409)
at php.java.bridge.Request.handleRequests(Request.java:485)
at php.java.bridge.JavaBridge.run(JavaBridge.java:213)
at php.java.bridge.ThreadPool$Delegate.run(ThreadPool.java:60)
Caused by: net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: clientes.jasper
… 12 more
Caused by: java.io.FileNotFoundException: clientes.jasper
… 12 more
incluye las librerías en el siguiente orden
require_once(’Java.inc’);
require(’php-jru/php-jru.php’);
Bueno, parece ser que el error viene por las rutas (para java supongo).
He puesto primero el require a Java.inc y el resultado es el mismo. Sin embargo he conseguido que genere el pdf, pero vacío.
require_once(‘Java.inc’);
require(‘php-jru/php-jru.php’);
$jru= new JRU();
$jru->loadDirLibrary(“/home/pablo/descargas/javabridge/php-jru/jars/”);
$con= new JdbcConnection(“org.postgresql.Driver”,”jdbc:postgresql://localhost/DB”,”usuario”,”contraseña”);
$parameters= new java(“java.util.HashMap”);
$jru->runReportToPdfFile(“/home/pablo/descargas/javabridge/clientes.jasper”, “/home/pablo/descargas/javabridge/listado.pdf”, $parameters, $con->getConnection());
La vez anterior no revise con detalle el error que se generaba:
En el error que se producía antes de esta el mensaje era el siguiente:
org.altic.jasperReports.JdbcConnection. Cause: java.lang.ClassNotFoundException: Could not find org.altic.jasperReports.JdbcConnection in java_require() path. Please check the path and the SEL and File permissions.Que indicaba que no se estaban cargando bien los archivos .jar, esto se corrigió y el mensaje luego fue el siguiente:
java.io.FileNotFoundException: clientes.jasperQue indica que no se encontró el archivo .jasper generado por iReport, lo que hace suponer que la ruta se encuentra mal o que no se tienen los permisos para acceder al archivo, revisa bien eso y cambia los permisos del archivo de la siguiente manera en una consola autenticado como root:
chmod 777 ruta_comlpeta -Rdonde ruta_completa es la dirección del directorio que contiene el archivo.jasper
es decir según los datos que enviaste seria algo como esto
chmod 777 /home/pablo/descargas/javabridge/ -RLo último que me has dicho es que ya habéis hecho esto, así que , es probable que si te genera el pdf en blanco el problema tenga origen en la conexión a la base de datos o en la consulta sql usada en el diseño del reporte.
Revisa con detalle el usuario y password de conexión a la base de datos.
Solucionado.
Lo de los permisos estaba bien.
Antes de que pusieras tu comentario, los había cambiado como has puesto.
Parece ser que faltaba el driver para la conexión en la base de datos postgresql-8.3-603.jdbc3.jar dentro del directorio jars.
Gracias por la ayuda.
gracias por los datos, yo tambien tenia el problema de que me salia el pdf pero en blanco y era porque tenia que agregar el driver de conexion para postgres dentro del directoria jars. muchas gracias.
Gracias por la libreria, me sirvio mucho y al fin tengo jasperreports generando reportes a traves de php o como se diga jojojojo, la cosa que ya funciono, saludos. Felicidades sigue asi.