|
|
|
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 |
|
|
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 |
|
|
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 [..] |
|
|
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 |