|
|
|
|
HSSFCGI
|
Question and Answers
|
|
|
|
|
Answers to some questions asked by HSSFCGI users.
- Q: When running command HSSFCGI/TABLEXLS or HSSFCGI/XLSGEN, the following error is displayed:
- Escape program message:
ERROR in executing XLSGEN, see joblog previous messages.
- Previous diagnostic message:
Message . . . . : Java exception received when calling Java method.
Last cell processed was row 0, column 0 in sheet *Unknown*.
Joblog message
Java exception received when calling Java method.
Error RNX0301 in pgm HSSFCGI/XLSGEN_2 module XLSGEN_2 at stmt + 244600:
"Java exception received when calling Java method."
- Additional message information (via F1):
Message ID . . . . . . : RNX0301 Severity . . . . . . . : 50
Message type . . . . . : Escape
Date sent . . . . . . : xx/xx/xx Time sent . . . . . . : xx:xx:xx
Message . . . . : Java exception received when calling Java method.
Cause . . . . . : RPG procedure XLSGEN_2 in program HSSFCGI/XLSGEN_2
received Java exception "java.lang.NoClassDefFoundError:
org.apache.poi.hssf.usermodel.HSSFWorkbook" when calling method ""
with signature "()V" in class "org.apache.poi.hssf.usermodel.HSSFWorkbook".
Recovery . . . : Contact the person responsible for program maintenance to
determine the cause of the problem.
What can I do About it?
A: This is a very common case. The error is that a Java class, needed by service program HSSFCGI/HSSFR4, cannot be found.
The way a Java class is retrieved by the Java Virtual Machine (JVM) is as follow:
- A search is made in IFS directory /QIBM/UserData/Java400/ext. This directory works like a system library list.
- If the search is unsuccessful, then the search goes through the IFS directories mentioned in the environment variable CLASSPATH, which works like a job library list.
One major problem is that once the JVM has been started in a job, the current CLASSPATH is stored in its data, and cannot be changed even by changing the job CLASSPATH.
This restriction has the following consequences:
- If the job has to process two or more applications using different classes, and each application sets up a different CLASSPATH,
only the first application will work, the subsequent ones will fail in retrieving their Java classes.
- To overcome this problem, Java application developers often do install their classes in the IFS directory /QIBM/UserData/Java400/ext.
In this way, other problems may raise when different applications have classes with the same name, and class methods are different.
This may happen when two applications, built over a given Java package (example: POI), require a different release of that package.
Because of this, Java classes used by HSSFCGI are not in IFS directory /QIBM/UserData/Java400/ext, they are in IFS directory /hssfcgi/java, and HSSFCGI sets up
the appropriate CLASSPATH environment variable before calling the JVM.
Once the above is understood, the ways to solve the NoClassDefFoundError are quite obvious:
- Make sure that IFS directory /QIBM/UserData/Java400/ext does not contain any POI-related and any XLPARSE-related objects.
- Run command WRKENVVAR(*SYS) and, if system level CLASSPATH environment variable is listed, remove it. Java applications should instead create their own CLASSPATH env.var's.
- If your job must execute some other Java applications beside running HSSFCGI commands TABLEXLS and/or XLSGEN, in these HSSFCGI commands specify the parameter
SBMJOB(*YES). This parameter submits the execution of the command in a separate batch job and the submitting job waits for the completion of the submitted one.
See also page JVMSTARTUP.
- Q: Is it possible to have a cell text vertically rotated?
A: Yes, by creating the Excel spreadsheet with some XLSGEN script and using the keyword rotate in tag <data>.
Example:<data type="Column-Header" rotate="90"> .
- Q: When using command TABLEXLS to create an Excel spreadsheet, how can I tell not to generate the first row cells as column headers?
A: Just specify parameter COLHDGOPT(0) .
- Q: How can I tell command TABLEXLS not to generate a cell depending on the contents of the related database field?
A: Specify parameter SKPFLDS (Skip fields by field test).
- Q: Is it possible, using XLSGEN, to generate spreadsheet cells containing drop down lists?
A: No.
|
|
|