2011-08-09 4 views
1

J'appelle une méthode appelée getBanks() (située dans BankService) à partir de mon application Flex. Voici la classe BANKSERVICE:Fichier non trouvé Exception

@org.springframework.stereotype.Service("com.apollo.counterpartcontacts.service.BankService") 
@org.springframework.flex.remoting.RemotingDestination("com.apollo.counterpartcontacts.service.IBankService") 
public class BankService extends _BankService { 

    private Logger logger = LoggerFactory.getLogger(getClass()); 
    private ApplicationContext applicationContext; 
    private List<String> configHostResources = new ArrayList<String>(); 
    private List<String> configResources = new ArrayList<String>(); 

    private PersistenceManager persistenceManager; 

    @BeforeClass 
    public void beforeClass() { 
     try { 
      addConfigResource("application.xml"); 
      addConfigHostResource("application.xml"); 
     } 
     catch (UnknownHostException e) { 
      logger.error("Error loading host specific resource", e); 
     } 
     List<String> aList = new ArrayList<String>(); 
     aList.addAll(configHostResources); 
     aList.addAll(configResources); 
     String[] aConfigArray = new String[aList.size()]; 
     aConfigArray = aList.toArray(aConfigArray); 
     applicationContext = new ClassPathXmlApplicationContext(aConfigArray); 

     persistenceManager = (PersistenceManager) applicationContext.getBean("persistenceManager"); 
    } 
     void addConfigResource(String aConfigName) { 
      logger.info("Adding a config: " + aConfigName); 
      configResources.add(aConfigName); 
     } 

     public void addConfigHostResource(final String theSuffix) throws UnknownHostException { 
      String aHostName = InetAddress.getLocalHost().getHostName(); 
      String aConfigName = aHostName.toLowerCase() + "." + theSuffix; 
      logger.info("Adding a host config: " + aConfigName); 
      configHostResources.add(aConfigName); 
     } 

    private org.springframework.orm.hibernate3.HibernateTemplate hibernateTemplate; 

    @org.springframework.beans.factory.annotation.Autowired 
    public void setHibernateTemplate(org.springframework.orm.hibernate3.HibernateTemplate hibernateTemplateValue) { 
     hibernateTemplate = hibernateTemplateValue; 
    } 

    public org.springframework.orm.hibernate3.HibernateTemplate getHibernateTemplate() { 
     return hibernateTemplate; 
    } 

    public List getBanks(){ 
     beforeClass(); 
     List allBanks = persistenceManager.getBanks(); 
     return allBanks; 
    } 

} 

Le problème est que l'appel à beforeClass() produit l'erreur suivante:

flex.messaging.MessageException: org.springframework.beans.factory.BeanDefinitionStoreException : IOException parsing XML document from class path resource [apnycdtg7qgcq1.application.xml]; nested exception is java.io.FileNotFoundException: class path resource [apnycdtg7qgcq1.application.xml] cannot be opened because it does not exist 

La chose curieuse à ce sujet est que apnycdtg7qgcq1.application.xml se trouve dans mon dossier src, le même endroit que l'erreur prétend regarder. Quelqu'un voit le problème ici?

Répondre

0

Le mot «ressource» comme dans addConfigResource et addConfigHostResource signifie généralement une ressource de chemin de classe. De même, ClassPathXmlApplicationContext attend des fichiers de contexte Spring sur le chemin de classe. Essayez de déplacer votre fichier sur le classpath et cela devrait fonctionner.

Si vous êtes un utilisateur Maven, cela signifie qu'il doit être déplacé vers src/main/resources. Si vous construisez avec quelque chose d'autre, déplacez le fichier là où cet outil s'attend à ce que les ressources résident, ou assurez-vous que lorsqu'il compile, il copie les fichiers XML sur le classpath (généralement où sont générés les fichiers .class).

Questions connexes