Re: Error al crear un workbook con POI

2018-08-09 Por tema Alex Martínez
Hola

Si usas la versiones actuales de poi posiblemente necesites java 8, pero
para poi 3.6 debería funcionar con java 1.5 o java 1.6, aunque si tu
intención es que funcionen en un equipo con V6R1 no hay opción para usar
java 8

¿tienes actualizados los grupos de Java?

Seguiría por revisar el CLASSPATH y que tiene permisos al directorio,
subdirectorios y archivos jar que utilices

Para comprobar si JAVA_HOME está bien definido se puede probar con JAVA
*VERSION desde 5250

En un equipo en V7R1 a mi me devuelve estos valores (para comprar niveles
de SR y fixpack que tienes instalados)

java version "1.5.0"

Java(TM) 2 Runtime Environment, Standard Edition (build
pap32devifx-20150415 (SR16 FP10 ))
IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 OS/400 ppc-32
j9vmap3223-20150415 (JIT enabled)
J9VM - 20150323_240985_bHdSMr

JIT  - 20130920_46470ifx2_r8

GC   - 20141118_AA)

JCL  - 20150415

java version "1.6.0"

Java(TM) SE Runtime Environment (build pap3260sr16fp50-20170814_01(SR16
FP50))
IBM J9 VM (build 2.4, JRE 1.6.0 IBM J9 2.4 OS/400 ppc-32
jvmap3260sr16fp50-20170804_02 (JIT enabled, AOT enabled)
J9VM - 20170718_356955

JIT  - r9_20170718_356955

GC   - GA24_Java6_SR16_20170718_0955_B356955)

JCL  - 20170812_01




Y comprueba que existen todos los jar dom4j-1.6.1.jar y que para poi 3.6
son 3 archivos (por ejemplo):

   - poi-ooxml-schemas-3.6-20091214.jar
   - poi-ooxml-3.6-20091214.jar
   - poi-3.6-20091214.jar

La versión de los archivos de xmlbeans quizás los encuentres en HSSFCGI con
CGIDEV2 http://www.easy400.net/hssfcgi/html/page5.htm

la indicación de classic se refiere a una JVM clasica (Y NO TE LAS
RECOMIENDO) en lugar de las nuevas J9 que poco tiene que ver con el modo
java headless, (sin terminal grafico)

El 8 de agosto de 2018, 19:23, Jorge Ubeda  escribió:

> Buen día a todos
> Esta es probablemente la primera vez que me dirijo a la lista con una
> pregunta. Lo hago porque recuerdo una discusión sobre el tema donde
> participaron Alex Martínez y José María Arzak, entre otros. El error que se
> le presentaba a José María era exactamente el mismo que en mi caso, y no sé
> cómo finalmente se solucionó.
> En mi caso, el mensaje suena así: *El procedimiento RPG XLCRTDEMO en el
> programa *
>
>   LIBPOI/XLCRTDEMO ha recibido una excepción Java  
> "java.lang.NoClassDefFoundError:
> org.apache.poi.xssf.usermodel.XSSFWorkbook"   al llamar al método
> "" con signatura "()V" con la firma "()V" en la  clase
> "org.apache.poi.xssf.*usermodel.XSSFWorkbook". *El mismo mensaje lo he
> visto en otra discusión en midrange.com, y tampoco allí veo una solución
> definida (discusión de Mark Murphy).
>
> Creo haber configurado correctamente el entorno, al menos en base a las
> recomendaciones de Scott Klement pero no logro pasar de este punto, que en
> el código rpgiv equivale a la llamada a new_XSSFWorkbook. Previamente la
> ejecución del código ha pasado la llamada a ss_begin_object_group(100) sin
> problemas, y falla en la segunda llamada de la función (book =
> new_XSSFWorkbook()).
>
> Como la primera llamada a una clase se produce en ss_begin_object_group,
> descartaría que el problema esté en encontrar la clase que solicita
> (problema de Classpath). En base a mis búsquedas de otros casos, las
> alternativas de fallo son
>
> · Que el classpath esté mal (creo que no, pero el mensaje parece
> indicarlo).
>
> · Que encuentre dos versiones distintas de la clase, y use la que
> no corresponde. Aunque hasta el momento no veo ÉSTE duplicado.
>
> · Que la versión de java sea incorrecta y no pueda manejar la
> llamada a la clase. He probado con java 5 y 6 sin resultados positivos.
>
> Condiciones: siendo el primer caso de uso, quiero basarme en el mismo
> conjunto de recursos que usó Scott Klement en sus pruebas, considerando que
> este ambiente está probado. Estoy usando Java 6, aunque tengo disponible
> java 5, que no ha respondido en mi última prueba tampoco. Estoy en V7R1M0,
> aunque compilamos para V6R1M0, a cuyo nivel están las versiones de java
> (J2SE 5.0 32 bits  y Java SE 6 32 bits)
>
> En base a esto, uso poi 3.6, dom4j 1.6.1, y xmlbeans 2.6.0. Esto es
> posible origen de problemas, ya que las versiones de cada jar son muy
> anteriores a las vigentes: poi 3.17, dom4j 2.0.2, y xmlbeans 3.0. de hecho,
> no logré encontrar un set conservado como versión 2.5.0 o 2.6.0 de
> xmlbeans, que ya no existen como proyecto separado, sino como parte de
> Apache.poi.
>
> De los fuentes de Scott Klement para el programa de servicio y prototipos,
> uso las versiones de XLPARSER4 y HSSFR4 adecuadas para poi 3.6. Aclaro que
> mi interés particular está en el uso de ficheros Excel xlsx, con lo que las
> alternativas anteriores no me sirven, y no las he testeado.
>
> He configurado classpath, QIBM_RPG_JAVA_PROPERTIES y JAVA_HOME (en este
> caso, en mi última prueba, apuntando a java 5). Veo que una vez lanzado
> java, el sistema agrega algunas variables de ambiente más, particularmente
> 

RE: Error al crear un workbook con POI

2018-08-09 Por tema Javier Mora
Teniendo en cuenta que estoy un poco oxidado respecto a este tema, yo haría lo 
siguiente:


1.   Eliminaría del CLASSPATH toda mención a los .JAR necesarios para 
trabajar con POI. Ejecutaría el programa para ver si se produce el mismo error. 
Si es así, es muy posible que no se esté encontrando la clase.

2.   Pondría (temporalmente) todos los .JAR en /QIBM/UserData/Java400/ext y 
volvería a probar. Esta es la carpeta por defecto donde buscan las JVM las 
clases que no encuentra en las rutas definidas en CLASSPATH. Comprueba si se 
reproduce el error.

3.   Te incluyo en el correo un HTML (que tenía guardado y que no encuentro 
en internet) que en su día me sirvió de ayuda para depurar errores de este 
estilo (versión más antigua en 
http://www.ibm.com/developerworks/rational/cafe/docBodyAttachments/2681-102-2-7220/Troubleshooting_RPG_Calls_To_Java_v2.html).

Yo estoy utilizando una versión adaptada del programa de servicio HSSFR4 pero 
con POI 3.1, la versión que sólo genera .XLS.

Si solucionas el problema, comenta la solución.

Saludos,

Javier

De: forum.help400-boun...@listas.combios.es 
[mailto:forum.help400-boun...@listas.combios.es] En nombre de Jorge Ubeda
Enviado el: miércoles, 8 de agosto de 2018 19:24
Para: forum.help400@listas.combios.es
Asunto: Error al crear un workbook con POI

Buen día a todos
Esta es probablemente la primera vez que me dirijo a la lista con una pregunta. 
Lo hago porque recuerdo una discusión sobre el tema donde participaron Alex 
Martínez y José María Arzak, entre otros. El error que se le presentaba a José 
María era exactamente el mismo que en mi caso, y no sé cómo finalmente se 
solucionó.
En mi caso, el mensaje suena así: El procedimiento RPG XLCRTDEMO en el programa
  LIBPOI/XLCRTDEMO ha recibido una excepción Java  
"java.lang.NoClassDefFoundError: org.apache.poi.xssf.usermodel.XSSFWorkbook"   
al llamar al método "" con signatura "()V" con la firma "()V" en la  
clase "org.apache.poi.xssf.usermodel.XSSFWorkbook". El mismo mensaje lo he 
visto en otra discusión en midrange.com, y tampoco allí 
veo una solución definida (discusión de Mark Murphy).
Creo haber configurado correctamente el entorno, al menos en base a las 
recomendaciones de Scott Klement pero no logro pasar de este punto, que en el 
código rpgiv equivale a la llamada a new_XSSFWorkbook. Previamente la ejecución 
del código ha pasado la llamada a ss_begin_object_group(100) sin problemas, y 
falla en la segunda llamada de la función (book = new_XSSFWorkbook()).
Como la primera llamada a una clase se produce en ss_begin_object_group, 
descartaría que el problema esté en encontrar la clase que solicita (problema 
de Classpath). En base a mis búsquedas de otros casos, las alternativas de 
fallo son

• Que el classpath esté mal (creo que no, pero el mensaje parece 
indicarlo).

• Que encuentre dos versiones distintas de la clase, y use la que no 
corresponde. Aunque hasta el momento no veo ÉSTE duplicado.

• Que la versión de java sea incorrecta y no pueda manejar la llamada a 
la clase. He probado con java 5 y 6 sin resultados positivos.
Condiciones: siendo el primer caso de uso, quiero basarme en el mismo conjunto 
de recursos que usó Scott Klement en sus pruebas, considerando que este 
ambiente está probado. Estoy usando Java 6, aunque tengo disponible java 5, que 
no ha respondido en mi última prueba tampoco. Estoy en V7R1M0, aunque 
compilamos para V6R1M0, a cuyo nivel están las versiones de java (J2SE 5.0 32 
bits  y Java SE 6 32 bits)
En base a esto, uso poi 3.6, dom4j 1.6.1, y xmlbeans 2.6.0. Esto es posible 
origen de problemas, ya que las versiones de cada jar son muy anteriores a las 
vigentes: poi 3.17, dom4j 2.0.2, y xmlbeans 3.0. de hecho, no logré encontrar 
un set conservado como versión 2.5.0 o 2.6.0 de xmlbeans, que ya no existen 
como proyecto separado, sino como parte de Apache.poi.
De los fuentes de Scott Klement para el programa de servicio y prototipos, uso 
las versiones de XLPARSER4 y HSSFR4 adecuadas para poi 3.6. Aclaro que mi 
interés particular está en el uso de ficheros Excel xlsx, con lo que las 
alternativas anteriores no me sirven, y no las he testeado.
He configurado classpath, QIBM_RPG_JAVA_PROPERTIES y JAVA_HOME (en este caso, 
en mi última prueba, apuntando a java 5). Veo que una vez lanzado java, el 
sistema agrega algunas variables de ambiente más, particularmente LIBPATH, que 
queda configurado (varía según el java que haya indicado) de esta manera: 
/QOpenSys/QIBM/ProdData/JavaVM/jdk50/32bit/jre/bin: 
/QOpenSys/QIBM/ProdData/JavaVM/jdk50/32bit/jre/bin/classic
La indicación de “classic” es contradictoria con la declaración en 
QIBM_RPG_JAVA_PROPERTIES , que es “headless”.
Si alguien tiene experiencia con este problema, le agradeceré totalmente su 
consejo.
Jorge Ubeda
Title: Troubleshooting calls from RPG to Java using EXTPROC(*JAVA)






Troubleshooting calls from RPG to Java using EXTPROC(*JAVA)