gratifiant > comp.lang.* > comp.lang.java

rustine22 (16/11/2003, 03h08)
Bonjour,

j'avais un prog en java composé de qq classes dans le package par
defaut. En cherchant sur le net, j'ai trouvé un package "client FTP"
tres pratique nommé com.cqs.ftp (j'ai les sources) .

Dans ce package, je veux modifier une classe d'affichage de
l'avancement de l'upload (StdoutSizeTransferMonitor ) du package
com.cqs.ftp, en rajoutant dans le constructeur une "réference" à une
classe graphique (ThreadGraphique) de mon prog principal (dans le
package par défaut) qui permettra d'appeler une méthode de MAJ d'une
barre d avancement..

Le problème, c'est que Eclipse me reponds :

ThreadGraphique ne peut pas être résolu (ou ne correspond pas à un
type valide) pour la zone StdoutSizeTransferMonitor.t

ou t est un champ privé de la classe StdoutSizeTransferMonitor de type
ThreadGraphique..

J'ai bien mis la classe ThreadGraphique en public pour qu'elle soit
visible par le 2eme package (com.cqs.ftp )..

J'ai ensuite tenté de mettre le prog principal dans un package (autre
que par defaut) que j'ai appelé "mainprog" et rajouté un :

import mainprog;
ou
import mainprog.*;
dans StdoutSizeTransferMonitor

mais Eclipse me dit :

L'importation mainclass ne peut pas être résolue

Je ne sais plus quoi faire.. Un probleme de CLASSPATH? (pourtant
Eclipse l'avait tres bien geré jusqu'à maintenant..)

Merci

Marc
Orabîg (16/11/2003, 10h04)
rustine22 wrote:
(...)
> ThreadGraphique ne peut pas être résolu (ou ne correspond pas à un
> type valide) pour la zone StdoutSizeTransferMonitor.t (...)


Je comprends pas bien, mais est-ce que tu es certain d'avoir déclaré le
package de ThreadGraphique dans la classe qui essaye d'y accéder ?
Si par exemple, cette classe ThreadGraphique est dans le package mainprog,
le source de ta classe "customizée" StdoutSizeTranferMonitor doit ressembler
à ça :

package com.cqs.ftp;

(...)
import mainprog.*; // Permet à cette classe de "voir" la classe
ThreadGraphique
(...)

public class StdoutSizeTranferMonitor
(...)
private ThreadGraphique t = null;
(...)

Si ca ne marche toujours pas, est-ce que ces deux classes sont dans le même
projet sous Eclipse ? Si ce n'est pas le cas, il faut que tu ajoutes une
dépendance entre les projets.

Une dernière remarque : je ne connais pas la bibliothèque com.cqs.ftp dont
tu parles, mais je suis étonné que tu sois obligé de modifier ses sources
pour ajouter ton propre moniteur graphique. Es-tu sur qu'il ne suffit pas de
remplacer le moniteur StdoutSizeTranferMonitor par un autre à toi qui
implémenterais la même interface ? Ca me semble beaucoup plus propre comme
ça.

Javament
rustine22 (16/11/2003, 22h39)
Bonsoir,

merci pour ta réponse, j'ai en fait redéfini le classpath correctement
(cad dans les proprietés avancées du poste de travail) et surtout
redemarré Eclipse!

Et la miracle, Eclipse a bien accepté la ligne

import mainprog.*;

Sinon concernant ta dernière question :

La classe d'affichage dont je parle StdoutSizeTransferMonitor porte
bien son nom car elle affiche sur la sortie standard, l'avancement en
bytes .. mais elle dérive d'une classe comportant des méthodes
virtuelles faite exprès pour visualiser les transferts :
TransferMonitor

Par paresse, j'ai réecrit StdoutSizeTransferMonitor alors que j'aurais
du en ecrire une autre derivant de TransferMonitor comme
FrameTransferMonitor..

A+
Marc

"Orabîg" <benoit> wrote in message news:1qe1
[..]
Benoît Chauvet (16/11/2003, 22h50)
rustine22 wrote:
> Bonsoir,
> merci pour ta réponse, j'ai en fait redéfini le classpath correctement
> (cad dans les proprietés avancées du poste de travail) et surtout
> redemarré Eclipse!
> Et la miracle, Eclipse a bien accepté la ligne


En effet, Eclipse aime bien qu'on le redemarre de temps à autre (il aime
bien les F5 aussi, pour rafraichir tel ou tel projet. A consommer sans
modération)

> Sinon concernant ta dernière question :
> La classe d'affichage dont je parle StdoutSizeTransferMonitor porte
> bien son nom car elle affiche sur la sortie standard, l'avancement en
> bytes .. mais elle dérive d'une classe comportant des méthodes
> virtuelles faite exprès pour visualiser les transferts :
> TransferMonitor
> Par paresse, j'ai réecrit StdoutSizeTransferMonitor alors que j'aurais
> du en ecrire une autre derivant de TransferMonitor comme
> FrameTransferMonitor..


Alors si tu es conscient du fait, tout va bien. :)
De plus, si une classe abstraite existe, elle doit vraiment faire tout le
boulot.

Enfin, je n'ai pas perdu ma journée, j'ai trouvé qqun d'encore plus
paresseux que moi ;)

Javament
Discussions similaires