Erreur avec le soleil.net.ftp.FtpClient par l'aide du JDK 1.7
J'ai développé un projet qui utilise sun.net.ftp.FtpClient
classe de télécharger un fichier depuis un serveur ftp pr j'ai été à l'aide du JDK 1.5.
Maintenant j'ai changé de JDK 1.7 et j'obtiens l'erreur suivante.
java: sun.net.ftp.FtpClient is abstract; cannot be instantiated
Il coutures pour moi JDK 1.7 ne prend pas en charge FtpClient .
Des suggestions pour résoudre ce problème sont les bienvenus?
OriginalL'auteur michdraft | 2013-12-20
Vous devez vous connecter pour publier un commentaire.
Vous ne devriez pas utiliser les classes
sun.*
- il n'y a aucune garantie qu'elles restent compatibles entre java-version.Je propose une réécriture d'utiliser quelque chose comme Apache Commons FTP à la place. Il devrait être assez simple à utiliser, de sorte qu'il devrait être une tâche facile.
OriginalL'auteur andrel
Même si il est bien vrai que les classes dans
sun.*
devrait être évité, la réponse ne traite pas l'erreur d'une manière appropriée, en plus de ce qui suggère une alternative.Je n'ai pas de portée sur le contexte dans lequel vous essayez d'instancier
sun.net.ftp.FtpClient
- mais il est toujours possible de le faire.La classe est abstraite, de sorte que vous ne pouvez pas l'instancier. (Voir §8.1.1.1)
Tout n'est pas perdu cependant.
Pour obtenir une instance de
FtpClient
, vous pouvez utiliser les méthodes statiques desun.net.ftp.FtpClientProvider
qui se trouve dans le SDK de le faire, comme dans l'exemple ci-dessous:Il y a un peu plus de travail, mais elle permet d'éviter l'ajout d'une nouvelle bibliothèque avec des tas de classes que vous n'avez pas besoin, ça dépend de ce que vous voulez faire.
OriginalL'auteur johanmynhardt
Il y a quelques changements depuis la 1.7.
Tels que:
OriginalL'auteur xici