Actually it's the same JT400 which sometimes works and sometimes doesn't work, all on my test machine. Here's the top of the stack trace:
com.ibm.as400.access.ExtendedIllegalArgumentException: objectName (/QSYS.LIB/MDBLLIB007.LIB/BLPEDI94.FILE/MAVERIK.MBR): Length is not valid.
at java.lang.Throwable.<init>(Throwable.java:195)
at java.lang.Exception.<init>(Exception.java:41)
at java.lang.RuntimeException.<init>(RuntimeException.java:43)
at java.lang.IllegalArgumentException.<init>(IllegalArgumentException.java:36)
at com.ibm.as400.access.ExtendedIllegalArgumentException.<init>(ExtendedIllegalArgumentException.java:65)
at com.ibm.as400.access.QSYSObjectPathName.checkObjectName(QSYSObjectPathName.java:462)
at com.ibm.as400.access.QSYSObjectPathName.<init>(QSYSObjectPathName.java:200)
This is a very simple class, all it does is to take the parts of the path name and format them into a QSYS.LIB path name. No connection to AS400 objects, just string manipulations.
Unfortunately this is the jt400Native.jar which is installed on the iSeries as part of the Java installation. And it's in the extensions directory, so just putting the JTOpen version on the classpath wouldn't do anything. I'm reluctant to change that configuration because chances are it's something stupid that I'm doing, but I sure can't see what. So I'm going to take Thorbjørn's advice and decompile the jar to see what it's doing.
PC2
-----Original Message-----
From: java400-l-bounces@xxxxxxxxxxxx [mailto:java400-l-bounces@xxxxxxxxxxxx] On Behalf Of Dan Kimmel
Sent: December 3, 2009 07:45
To: Java Programming on and around the iSeries / AS400
Subject: RE: QSYSObjectPathName -- Length is not valid???
Thor raised a good point. Do you have the old jt400 on the production machine and the new one on the test machine?
One trick I learned from Tim Rowe: IBM puts all the latest code into jtopen.jar on sourceforge. So if you want the latest fixes, download the jar from there. The PTF's to fix the current official release of jt400.jar can lag weeks or months behind.
-----Original Message-----
From: java400-l-bounces@xxxxxxxxxxxx [mailto:java400-l-bounces@xxxxxxxxxxxx] On Behalf Of Thorbjoern Ravn Andersen
Sent: Thursday, December 03, 2009 12:35 AM
To: Java Programming on and around the iSeries / AS400
Subject: Re: QSYSObjectPathName -- Length is not valid???
Clapham, Paul skrev:
QSYSObjectPathName fileName = new QSYSObjectPathName("%LIBL%",
"BLPEDI94", "MAVERIK", "MBR");
and when I run it in my complex environment it throws this exception:
com.ibm.as400.access.ExtendedIllegalArgumentException: objectName
(/QSYS.LIB/%LIBL%.LIB/BLPEDI94.FILE/MAVERIK.MBR): Length is not valid.
If I copy and paste the line of code into a simple program which just
does that and then prints the result, I get the result printed. But in
my multi-threaded message-processing system, I get the exception. Not
only that, the line of code is working correctly in the production
environment and it's just failing in the test environment.
In all cases it's the QSYSObjectPathName class which is being loaded
from here:
/QIBM/ProdData/OS400/jt400/lib/jt400Native.jar
I would transfer that jt400Native.jar to my personal computer, and use a decompiler for analyzing the stack trace with the ExtendedIllegalArgumentException (my guess is that %LIBL%.LIB should be just %LIBL%).
I have good experiences with the Jadclipse plugin to Eclipse for this (for which you need the jad binary) when you remember to set up Jadclipse to generate source corresponding to the original line numbers in the Preferences.
We are currently shipping jt400.jar with a Java program being deployed on V6R1 as the native library had some issue with AS400 connections not remembering CHGLIBL commands which had been issued earlier. We worked around it by including the jt400 5.0 jar instead.
--
Thorbjørn Ravn Andersen "...plus... Tubular Bells!"
--
This is the Java Programming on and around the iSeries / AS400 (JAVA400-L) mailing list To post a message email: JAVA400-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options,
visit:
http://lists.midrange.com/mailman/listinfo/java400-l
or email: JAVA400-L-request@xxxxxxxxxxxx Before posting, please take a moment to review the archives at
http://archive.midrange.com/java400-l.
--
This is the Java Programming on and around the iSeries / AS400 (JAVA400-L) mailing list To post a message email: JAVA400-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options,
visit:
http://lists.midrange.com/mailman/listinfo/java400-l
or email: JAVA400-L-request@xxxxxxxxxxxx Before posting, please take a moment to review the archives at
http://archive.midrange.com/java400-l.
As an Amazon Associate we earn from qualifying purchases.