2009-03-19 7 views
25

Salut à tous. Je travaille sur un projet pour l'école où on nous donne le fichier .class mais pas la source à inclure dans notre code. J'utilise Eclipse et je veux inclure le fichier dans mon projet pour pouvoir instancier des objets et l'utiliser. Comment inclure des fichiers .class dans mon projet dans Eclipse? (Java)

Le fichier est TokenizerImpl.class, et je veux l'utiliser comme ceci:

TokenizerImpl tokenizer = new TokenizerImpl(foo);

je mets le fichier dans mon dossier de projet, et Eclipse dit que « TokenizeImpl ne peut être résolu comme un type », que je suppose des moyens il ne peut pas trouver la classe ou la source. J'ai essayé de le mettre dans le dossier "bin" du projet et j'ai eu la même erreur. La recherche Google et la recherche SO n'ont pas semblé répondre à cela, alors je vais essayer. Comment puis-je faire cela, oh sages?

Edit: Oh mon dieu, j'ai trouvé que le problème était autre chose. Ces solutions ont bien fonctionné, mais j'ai oublié de créer l'interface Tokenizer implémentée par TokenizerImpl. Doh. Merci pour votre aide, j'ai beaucoup appris sur eclipse.

Répondre

40

Vous pouvez ajouter un répertoire contenant les fichiers de classe au projet Eclipse, uniquement s'il se trouve dans l'un de vos projets Eclipse, dans un répertoire généré ou dans celui que vous avez créé. Cela peut être fait en ajoutant le dossier de classe au chemin de compilation Java de l'application. Vous pouvez définir cela dans les propriétés du projet, en visitant Java Build Path -> Bibliothèques -> Ajouter un dossier de classe. Gardez à l'esprit que vous devrez spécifier le dossier racine contenant les fichiers de classe dans leurs paquets. Par conséquent, si vous souhaitez que l'accès au compilateur com.stackoverflow.Example.class soit présent dans le répertoire classes sous le projet A (mais pas dans le chemin de génération du projet A), vous devez ajouter "classes" en tant que class class, et non classes/com/stackoverflow en tant que dossier de classe.

+2

"Gardez à l'esprit que vous devrez spécifier le dossier racine contenant les fichiers de classe dans leurs paquets." +1 –

0

D'autres personnes ont maintenant donné de meilleures réponses. Cette "réponse" consistait principalement à obtenir des informations du PO car la question initiale ne nous renseignait pas vraiment sur ce qui avait été essayé. Il y a maintenant twoanswers qui répondent vraiment à la question à long terme.

Ma première réponse est laissée pour un contexte contextuel. Avez-vous copié le dossier bin dans Eclipse ou en dehors d'Eclipse? Si vous l'avez fait en dehors d'Eclipse, vous devez faire un clic droit sur le dossier "bin" et sélectionner "refresh" pour Eclipse pour voir le nouveau fichier. Un fichier * .class dans le dossier approprié (en fonction de son package) sous le répertoire bin doit le faire.

+0

Il est dans le dossier bin, mais dois-je faire quelque chose pour l'ajouter au paquet approprié? Il suffit de le mettre dans le dossier du paquet, correct? – jergason

+0

Si elle est dans le paquet com.stackoverflow.javacode alors vous mettriez le fichier de classe dans le répertoire bin/com/stackoverflow/javacode/ – Eddie

+0

ATTENTION: Si jamais vous nettoyez l'espace de travail, alors votre fichier .class sera parti! – dhiller

14

Projet -> Propriétés -> Chemin de génération Java -> Bibliothèques -> Ajouter externe classe dossier

Le dossier doit contenir une hiérarchie de package, à savoir si votre classe est vraiment foo.bar.TokenizerImpl il doit être dans la sous-répertoire foo/bar.

1

Vous pouvez également JAR les fichiers de classe que vous souhaitez ajouter et ajouter le fichier JAR aux dépendances de construction. Pour moi, c'est la solution la plus propre. En interne, le fichier JAR doit avoir la structure de répertoire correcte, bien sûr.

Cliquez droit sur votre projet et sélectionnez Java Build Path pour ajouter de nouvelles dépendances.

La copie dans le dossier bin ne fonctionnera pas très bien car elle est destinée à contenir le résultat des sources compilées. Dès que vous nettoyez quoi que ce soit, le fichier sera parti.

0

ou de tout mettre dans un fichier jar et l'ajouter comme un pot externe.

Questions connexes