Gavin:
Thanks for confirming what support told me and this is indeed a new application. Sometimes it doesn't hurt to call IBM ;-) The problems with IBM's implementation of Java and Environment Variables on the iSeries are just bizarre. For instance, your example below does not work in V5R4M5 with any of the JVMs, but this works:
addenvvar QIBM_RPG_JAVA_PROPERTIES
value('-Djava.endorsed.dirs=/Java')
However, I was able to put: java.endorsed.dirs=/java:/java/lib in the systemDefault.properties file in my home directory and it works. Put in a semicolon and it does not. There are some very different behaviors for environment variables and Java properties on the iSeries than any other platform I have worked on. What do I have to look forward to? I appreciate all the advice you can give a new iSeries Java programmer.
Nick Sonin
-----Original Message-----
From: Gan Zhang [mailto:zhanggan@xxxxxxxxxx]
Sent: Thursday, September 27, 2012 11:31 PM
To: Java Programming on and around the IBM i
Cc: java400-l-bounces@xxxxxxxxxxxx
Subject: Re: J9 JVM not compliant?
This is really a limitation for Java on IBM i . It's not only for J9 but
also for Classic JVM on i. Is your application a new app with Java on i?
Or it worked someway before you move to J9?
For RPG calling Java, there is a workaround way to make your application
work is that you can using a java.endorsed.dirs property to include the
folders containing your JARs.
addenvvar QIBM_RPG_JAVA_PROPERTIES
value('-Djava.endorsed.dirs=/Java;/Java/lib;')
Wish it can work for you.
Best regards.
____________________________________________________________________________________________
Gavin, Zhang Gan
IBM i J9 Dev,
http://www.ibm.com/developerworks/ibmi/techupdates/java
Email: zhanggan@xxxxxxxxxx
Phone: +86-10-82452719
Address: 1/F, 28, ZhongGuanCun Software Park, No.8 Dong Bei Wang West
Road, Haidian District, Beijing P.R.China 100193
"Sonin,Nikolai" <nsonin@xxxxxxxxxxx>
Sent by: java400-l-bounces@xxxxxxxxxxxx
09/28/2012 12:13 AM
Please respond to
Java Programming on and around the IBM i <java400-l@xxxxxxxxxxxx>
To
<java400-l@xxxxxxxxxxxx>,
cc
Subject
J9 JVM not compliant?
To All:
I am trying to use the 32 bit J9 JVM that is 1.6 of java on V5R4M5 from
an ILE RPG program:
The following code:
D q s 1a inz('''')
/free
Exec_Command('CHGCURDIR DIR(' + q + '/java/' + q + ')');
Exec_Command('ADDENVVAR ENVVAR(CLASSPATH) REPLACE(*YES) ' +
'VALUE(' +
q +
'.:/Java/*.jar:/Java/lib/*.jar:/Java/rpgmail.jar' +
q +
')');
Exec_Command('ADDENVVAR ENVVAR(JAVA_HOME) REPLACE(*YES) ' +
'VALUE('+ q + '/QOpenSys/QIBM/ProdData/JavaVM/jdk60/32bit'
+ q + ')');
return;
/end-free
P e
Is supposed to set the JAVA_HOME ENVVAR and the CLASSPATH ENVVAR for the
JVM before using the Java Mail API.
It does this:
CLASSPATH '.:/Java/*.jar:/Java/lib/*.jar:/Jav' >
JAVA_HOME '/QOpenSys/QIBM/ProdData/JavaVM/jdk' >
But this is what I get in the Job Log:
Message ID . . . . . . : RNX0301 Severity . . . . . . . : 50
Message type . . . . . : Escape
Date sent . . . . . . : 09/27/12 Time sent . . . . . . :
12:06:09
Message . . . . : Java exception received when calling Java method.
Cause . . . . . : RPG procedure RPGMAIL_NE in program
SONINIKO/RPGMAILSV
received Java exception "java.lang.NoClassDefFoundError:
javax.mail.Address"
when calling method "<init>" with signature "()V" in class
"com.mowyourlawn.rpgmail.RPGMail".
According to Oracle in Java 6 specifying the directory or *.jar in the
classpath is supposed search all of the jar files in the directory.
Obviously I am doing something wrong or IBM did not get the message.
What am I doing wrong?
Thanks in advance for your time and effort.
Nick Sonin
As an Amazon Associate we earn from qualifying purchases.