hi Jack,
On 3/5/2012 2:12 PM, Jack Tucky wrote:
I downloaded the source. I should have downloaded the JAR, correct?
Right... the source is source code that you'll have to compile before
you can use it. If you get the one that's referred to as a "pre-built
binary" it means that they've already compiled it for you.
I just tried downloading the pre-built binary, and it came as a JAR
file. So, there's nothing to extract.
I would recommend creating an IFS directory where you want to store
stuff like this. For example, maybe you want to create a Java
directory, and inside that, create a PDFBOX directory?
mkdir dir('/java')
mkdir dir('/java/pdfbox')
Then put the pdfbox-1.6.0.jar file in that /java/pdfbox directory. Now
that you've done that, you need to tell Java (not RPG. RPG doesn't know
how to run Java code) how to find the JAR file. This is done with the
CLASSPATH environment variable. If this PDFBOX is the only Java class
you want to use, then you'd do this:
ADDENVVAR ENVVAR(CLASSPATH) +
VALUE('/java/pdfbox/pdfbox-1.6.0.jar')
If you want the variable to still be there after you sign off and back
on again, make it a system level variable:
ADDENVVAR ENVVAR(CLASSPATH) +
VALUE('/java/pdfbox/pdfbox-1.6.0.jar') +
LEVEL(*SYS)
If you have multiple JAR files (or directories containing .class files)
that you'd like to make available to your application, you can list them
all in your CLASSPATH at once. To do that, simply separate each JAR
file from the next using a colon. (But, make sure there are no extra
spaces)
ADDENVVAR ENVVAR(CLASSPATH) +
VALUE('/java/pdfbox/pdfbox-1.6.0.jar:/java/poi3.6+
/poi-3.6-20091214.jar:/java/jdbc/mysql-conn+
ector-java-5.1.12-bin.jar') +
LEVEL(*SYS)
..etc...
The CLASSPATH must be set before you start the JVM. (i.e. before the
first RPG program in the job uses Java. Once any RPG program in the job
uses java, the JVM is loaded and it will not check the CLASSPATH again.)
The problem with using /QIBM/UserData/Java400/ext is that it considers
the JAR files to be "extensions" to the Java run-time environment.
Therefore, every single Java program on the system will load the the JAR
files in that directory, automatically. (with or without a classpath)
When you use the "ext" directory, you can only have one version of a
given JAR file (or product) available on your system. you can't have
some jobs using one version, and others using another version, because
whatever is in "ext" always loads automatically, no matter what.
By contast, when you use CLASSPATH (and the JAR file is not in 'ext')
this problem is gone. For example (hypothetically), I may have some
older 3rd-party software using PDFBOX 1.2 on my system, but my new RPG
program might want to use PDFBOX 1.6.0. With CLASSPATH that's no
problem. With "ext", it's impossible to do that.
-SK
As an Amazon Associate we earn from qualifying purchases.