2010-08-08 5 views
8

J'ai le code comme ceci dans Main.java:FileNotFoundException..Classpath ressource introuvable au printemps?

AbstractApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml"); 

Jusqu'à récemment, il travaillait, mais je ne sais pas pourquoi il a commencé à défaut à l'exception ci-dessous:

Exception dans le fil "principal" org.springframework.beans.factory.BeanDefinitionStoreException: IOException analyse le document XML à partir de ressource de chemin de classe [spring-config.xml]; exception imbriquée est java.io.FileNotFoundException: chemin classe ressource [printemps-config.xml] ne peut pas être ouvert parce qu'il n'existe pas

le printemps-config.xml est en src/main/resources dossier.

En fait, je voulais en savoir plus sur les annotations: @Postconstruct et @Predestroy, donc j'ai changé le chemin de compilation en Jdk 1.6 à partir de Jdk 1.5.

Depuis lors, le problème a commencé ...

Toute idée pourquoi il ne fonctionne pas?

NOTE: Si veut voir ma structure du projet s'il vous plaît suivez ce lien http://code.google.com/p/javapracticeram/source/browse/trunk/SpringExample/

EDIT: alt text http://i38.tinypic.com/348nbde.png

Répondre

0

Cela est dû au printemps-config.xml est pas classpath.

Ajoutez le chemin complet de spring-config.xml à votre chemin de classe.

Ecrivez également la commande que vous exécutez pour exécuter votre projet. Vous pouvez vérifier classpath dans la commande.

+0

Yok, Merci pour votre reply..As je l'ai mentionné dans le fichier de configuration de question est dans le dossier des ressources qui est dans le chemin de la construction (s'il vous plaît voir la capture d'écran) .. Comment je lance mon projet i est juste lancer le fichier main.jav .. et mon projet commence ... Pourriez-vous s'il vous plaît être plus précis sur ce que vous suggérez .. Je ne pouvais pas comprendre .. Merci pour votre réponse .. – javanoob

+0

@javanerd Build Path won ' t être utilisé pour exécuter votre programme. pouvez-vous également mettre une capture d'écran pour exécuter la configuration que vous utilisez. Je suppose que vous exécutez votre programme d'éclipse. – YoK

+0

Je ne sais pas ce que j'ai fait, mais il fonctionne maintenant ... Merci YoK pour regarder dans ma question [idiot] :) – javanoob

3

Vérifiez le contenu de SpringExample/target/classes. Spring-config.xml est là? Sinon, essayez de supprimer manuellement le répertoire SpringExample/target/et forcez une reconstruction avec Project => Clean ... dans Eclipse.

+1

pouvez-vous s'il vous plaît expliquer pourquoi cela se produit. Après beaucoup de débogage de ce problème, je suis tombé sur votre réponse, mais je n'arrive toujours pas à comprendre la raison de ce problème. –

+0

Basé sur la configuration de Java Build Path dans la capture d'écran ci-dessus, Eclipse a compilé des classes (plus toute autre chose du classpath, y compris les fichiers .xml) dans target/classes. Selon les autres outils de construction utilisés (Maven, Ant, sbt, etc.), quelque chose pourrait effacer ce répertoire en dehors des connaissances d'Eclipse, et forcer un nettoyage dans Eclipse fera en sorte que la cible/classes sera reconstruite. – earldouglas

0

Deux choses dignes d'être signalées:

  1. La portée de votre dépendance ressort contexte ne doit pas être « exécution », mais « compilation », qui est la valeur par défaut, de sorte que vous pouvez simplement supprimer la ligne de portée .
  2. Vous devez configurer le plugin du compilateur pour le compiler au moins à java 1.5 pour gérer les annotations lors de la construction avec Maven. (Peut également affecter les paramètres IDE, mais Eclipse ne tend pas à se soucier.)

    <build> 
        <plugins> 
         <plugin> 
          <artifactId>maven-compiler-plugin</artifactId> 
          <configuration> 
           <source>1.5</source> 
           <target>1.5</target> 
          </configuration> 
         </plugin> 
        </plugins> 
    </build> 
    

Après cela, reconfigurant votre projet Maven doit corriger. Je ne me souviens pas exactement comment faire cela dans Eclipse, mais vous devriez le trouver si vous faites un clic droit sur le nœud du projet et que vous faites un tour dans les menus.

11

Regarder your classpath vous excluez src/main/resources et src/test/resources:

<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/> 
    <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/> 

Y at-il une raison? Essayez de ne pas exclure un chemin de classe à spring-config.xml :)

0

Je rencontrais le même problème lors de l'exécution de mon projet. En vérifiant la structure des fichiers, je me suis rendu compte que le fichier xml de Spring se trouvait dans le paquetage du projet et ne pouvait donc pas être trouvé. Je l'ai mis à l'extérieur du paquet et ça a très bien fonctionné.

-2

Meilleure façon de gérer une telle erreur "Utiliser l'annotation". spring.xml- <context:component-scan base-package=com.SpringCollection.SpringCollection"/>

annotation ajouter dans cette classe pour laquelle vous souhaitez utiliser ID Bean (je suis en utilisant la classe "First") -

@Component 

public class Première {

Variations de classe principale ** -

ApplicationContext contexte = nouvelle AnnotationConfigApplicationContext (First.class); utilise ceci.