Page 1 sur 1

JAVA

Posté : lun. 26 mars 2007, 09:32:22
par davbail
Bonjour,

Depuis notre site web (développé à l'aide de phlWeb), je dois faire appel à une application développée en JAVA.

J'ai donc créé un programme RPG qui fait référence à mes classes java situées dans un fichier .jar dans un dossier JAVA à la racine de mon IFS. (j'ai donc renseigné la variable environnement CLASSPATH). Lorsque j'appel mon programme depuis l'as400, je n'ai pas de problème ; le programme reconnait mes classes java et il s'éxecute normalement.

Maintenant, je souhaite appeler ce programme depuis une interface phlWEB. Depuis phlweb il existe une fonction "CallPgm400" qui permet l'exécution d'un programme RPG. Lorsque mon programme se lance il se plante... en fait il n'arrive pas à trouver mes classes.

Dans l'historique de mon travail, j'ai le message suivant :

ID message . . . . . . : JVAB529 Gravité . . . . . . . : 40
Type de message . . . : Diagnostic
Date d'envoi . . . . . : 22/03/07 Heure d'envoi . . . . : 11:17:23

Message . . . . : Droit public en écriture sur ".".
Cause . . . . . : Le répertoire "." du chemin de classe possède le droit
public en écriture. Si dans un répertoire, plusieurs fichiers de classe
possèdent le même nom, le premier fichier trouvé est exécuté.
Que faire . . . : Si CHKPATH(*SECURE) est indiqué, l'exécution de la
commande ne peut pas aboutir si un répertoire du chemin de classe possède le
droit public en écriture. Demandez à l'administrateur qu'il retire ce droit
sur le répertoire "." ou modifiez CHKPATH et relancez la commande.
Si le répertoire "." conserve le droit public en écriture et que
CHKPATH(*SECURE) n'est pas indiqué, vérifiez les classes qui sont exécutées
lorsque le paramètre OPTION est défini par la valeur *VERBOSE, puis relancez
la commande.

puis ensuite celui-ci :

ID message . . . . . . : RNX0301 Gravité . . . . . . . : 50
Type de message . . . : Arrêt programme
Date d'envoi . . . . . : 22/03/07 Heure d'envoi . . . . : 11:17:24

Message . . . . : Erreur Java reçue à l'appel de la méthode Java.
Cause . . . . . : La procédure RPG IPGEQUA1 du programme PHLDEV/IPGEQUA1 a
reçu une erreur Java "java.lang.NoClassDefFoundError:
fr/arsoebr/routeurequarrissage/client/PreparateurDonnees" en appelant la méthode "<init>" avec la signature "(Ljava.lang.String;Ljava.lang.String;)V" dans la classe "fr.arsoebr.routeurequarrissage.client.PreparateurDonnees".
Que faire . . . : Prenez contact avec le responsable de la maintenance
logicielle afin d'identifier la cause de l'incident.
Technical description . . . . . . . . : If the exception indicates that the
Java class was not found, ensure the class for the method is in the class
path. If the exception indicates that the Java method was not found, check the method name and signature. If the signature is not correct, change the RPG prototype for the method, or change the Java method, so that the return type and parameter types match. You can determine the signatures for all the methods in class XYZ using command QSH CMD('javap -s XYZ').

Je n'arrive pas à comprendre pourquoi mon programme se plante (concrètement il ne trouve pas mes classes ou il n'a pas le droit d'y accéder) depuis phlWEB alors que depuis l'AS, l'exécution du programme se fait correctement. J'utilise le même profil, donc les mêmes droits, dans les deux cas.

Est ce que quelqu'un à une idée sur les causes de mon problème.

Merci d'avance pour vos réponses.

CLASSPATH limité à un travail.

Posté : lun. 26 mars 2007, 16:37:16
par cmasse
qu'en est-il du CLASSPATH ?

la variable d'environnement est valable pour UNE session uniquement et n'a donc pas de répercussion sur l'environnement de PHLWEB (j'imagine).

il est préférable de regarder dans ce cas systemDefault.properties


http://publib.boulder.ibm.com/infocente ... dpropf.htm

(sans texte)

Posté : mar. 27 mars 2007, 07:42:13
par davbail
Bonjour,

Comment se fait-il que je ne dispose pas du fichier SystemDefault.properties dans mon IFS (à cet emplacement : /QIBM/UserData/Java400) ?

(sans texte)

Posté : mar. 27 mars 2007, 09:14:58
par davbail
Je viens de créer un fichier /QIBM/UserData/Java400/SystemDefault.properties contenant la ligne suivante :
java.class.path=.:/java:/java/ModuleJava1.0.0.jar

et cela fonctionne, mes classes sont reconnues depuis mon appli phl.