FileNotFoundException
cool-abdoul
Messages postés
103
Statut
Membre
-
cool-abdoul Messages postés 103 Statut Membre -
cool-abdoul Messages postés 103 Statut Membre -
Bonjour,
code
public class Ex2JdbcDao {
public static void main (String [] args) {
// Create the application context
ApplicationContext ctx = (ApplicationContext)new ClassPathXmlApplicationContext(new String []{"springXMLConfig.xml"});
// Obtain a reference to our DAO
Ex2JdbcDao dao = (Ex2JdbcDao) ctx.getBean("dao");
String countryCode = "USA" ;
String daodao = dao.getClass().getName().toString();
// Find a few random cities in the US
//for(int i = 0; i < 4; ++i)
System.out.println ("A random city " + countryCode + " - " + daodao);
//System.out.print("A random city in %s is %s%n", countryCode, dao.getRandomCityByCountryCode(countryCode));
}
erreur :
INFO: Loading XML bean definitions from class path resource [springXMLConfig.xml]
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [springXMLConfig.xml]; nested exception is java.io.FileNotFoundException: class path resource [springXMLConfig.xml] cannot be opened because it does not exist
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:320)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:290)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:142)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:158)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:184)
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:112)
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:79)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:97)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:411)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:338)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:122)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:76)
at code.Ex2JdbcDao.main(Ex2JdbcDao.java:19)
Caused by: java.io.FileNotFoundException: class path resource [springXMLConfig.xml] cannot be opened because it does not exist
at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:142)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:307)
Ne me demander pas s'il vous plaît le chemin d'accès au fichier car le problème n'est pas à ce niveau même s'il met un FileNotFoundException. J'ai bien chercher à ce niveau sans solution.
code
public class Ex2JdbcDao {
public static void main (String [] args) {
// Create the application context
ApplicationContext ctx = (ApplicationContext)new ClassPathXmlApplicationContext(new String []{"springXMLConfig.xml"});
// Obtain a reference to our DAO
Ex2JdbcDao dao = (Ex2JdbcDao) ctx.getBean("dao");
String countryCode = "USA" ;
String daodao = dao.getClass().getName().toString();
// Find a few random cities in the US
//for(int i = 0; i < 4; ++i)
System.out.println ("A random city " + countryCode + " - " + daodao);
//System.out.print("A random city in %s is %s%n", countryCode, dao.getRandomCityByCountryCode(countryCode));
}
erreur :
INFO: Loading XML bean definitions from class path resource [springXMLConfig.xml]
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [springXMLConfig.xml]; nested exception is java.io.FileNotFoundException: class path resource [springXMLConfig.xml] cannot be opened because it does not exist
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:320)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:290)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:142)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:158)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:184)
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:112)
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:79)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:97)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:411)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:338)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:122)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:76)
at code.Ex2JdbcDao.main(Ex2JdbcDao.java:19)
Caused by: java.io.FileNotFoundException: class path resource [springXMLConfig.xml] cannot be opened because it does not exist
at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:142)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:307)
Ne me demander pas s'il vous plaît le chemin d'accès au fichier car le problème n'est pas à ce niveau même s'il met un FileNotFoundException. J'ai bien chercher à ce niveau sans solution.
11 réponses
oui mais le problème, c'est que ce genre de fonction ne renvoie de "FileNotFoundException" seulement si elle ne trouve pas le fichier...
Il faut bien vérifier les paramétrages du compilateur (quel est ce "class path" ? ) et de votre système. Peut-être ce fichier est sur le réseau et le compilateur n'y a pas accès. ça peut-être plein de truc mais d'une manière ou d'une autre votre programme ne trouve pas le fichier spécifié dans les répertoires où il cherche.
Il faut bien vérifier les paramétrages du compilateur (quel est ce "class path" ? ) et de votre système. Peut-être ce fichier est sur le réseau et le compilateur n'y a pas accès. ça peut-être plein de truc mais d'une manière ou d'une autre votre programme ne trouve pas le fichier spécifié dans les répertoires où il cherche.
Excuse moi pacorabanix, je comprends ta réaction !!
Je te confirme que les 2 fichiers springXMLConfig.xml et Ex2JdbcDao.java sont dans le même répertoire.
c'est ça la bizarerie avec ce FileNotFoundException.
Rappelle : J'utlise la même syntaxe dans une autre application différente de celle-ci et ça marche !! Mais ici ça ne fonctionne pas et je ne comprends plus JAVA ! lol
Je te confirme que les 2 fichiers springXMLConfig.xml et Ex2JdbcDao.java sont dans le même répertoire.
c'est ça la bizarerie avec ce FileNotFoundException.
Rappelle : J'utlise la même syntaxe dans une autre application différente de celle-ci et ça marche !! Mais ici ça ne fonctionne pas et je ne comprends plus JAVA ! lol
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Et si c'était une histoire de droits ? que l'utilisateur qui fait fonctionner le pgm n'ait aucun droit d'accès sur springXMLConfig.xml ?
Je comprends que cela soit très judicieux de penser à cela !! En fait le fichier springXMLConfig.xml , c'est un fichier que j'ai mis en place. Voici son contenu :
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans/" xmlns:aop="http://www.springframework.org/schema/aop/" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans/ http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop/ http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx/ http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="/WEB-INF/jdbc.properties" />
<util:map id="dbProps">
<entry key="jdbc.driverClassName" value="com.mysql.jdbc.Driver"/>
<entry key="jdbc.url" value="jdbc:mysql://localhost/formation_stagiare"/>
<entry key="jdbc.username" value="root"/>
<entry key="jdbc.password" value="root"/>
</util:map>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"
p:driverClassName="${jdbc.driverClassName}"
p:url="${jdbc.url}"
p:username="${jdbc.username}"
p:password="${jdbc.password}" />
<!-- ADD PERSISTENCE SUPPORT HERE (jpa, hibernate, etc) -->
<bean class = "org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="properties" ref="dbProps"/>
</bean>
<bean id="dao" class="code.Ex2JdbcDao">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="viewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"/>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans/" xmlns:aop="http://www.springframework.org/schema/aop/" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans/ http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop/ http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx/ http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="/WEB-INF/jdbc.properties" />
<util:map id="dbProps">
<entry key="jdbc.driverClassName" value="com.mysql.jdbc.Driver"/>
<entry key="jdbc.url" value="jdbc:mysql://localhost/formation_stagiare"/>
<entry key="jdbc.username" value="root"/>
<entry key="jdbc.password" value="root"/>
</util:map>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"
p:driverClassName="${jdbc.driverClassName}"
p:url="${jdbc.url}"
p:username="${jdbc.username}"
p:password="${jdbc.password}" />
<!-- ADD PERSISTENCE SUPPORT HERE (jpa, hibernate, etc) -->
<bean class = "org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="properties" ref="dbProps"/>
</bean>
<bean id="dao" class="code.Ex2JdbcDao">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="viewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"/>
</beans>
Je compreds bien la problematique du droit. Mais il ne se pose pas dans mon appli. Au fait, dans mon cas, c'est seulement l'accès à mysql qui nécessite un droit par un nom user "root" et un mot de passe "root".
OK !!! Admettons que je ne sache pas grand chose sur la question de droit d'accès à un fichier de config xml dont j'ai l'habitude de manipuler peut sans vraiment le maîtriser. C'est quoi alors cette question du droit ? Un exemple serait plus plosible pour compprendre ce que le droit d'accès !!
merci
merci
re
En fait, c'est pas parce que tu vois et tu accèdes sans souci à ce fichier en particulier que c'est vrai pour tous les utilisateurs déclarés sur ton système.
Si l'erreur est FileNotFound, c'est que le process qui cherche à y accéder ne le voit pas. S'il existe (car tu le vois) et que lui ne le vois pas, c'est que la solution se trouve au niveau des droits d'accès ou de la propriété (au sens appartenance).
Et ce n'est pas parce que deux fichiers sont dans le même dossier qu'ils partagent les mêmes droits et propriété. C'est donc pour ces raisons qu'il t'est conseillé de vérifier les droits et/ou la propriété.
Une fois que tu as vérifié ce point là, on a deux possibilités :
1. les droits/propriété sont identiques entre les deux fichiers cité en exemple : tu viens de mettre le doigt sur un bug et il faut contacter java ou sun ou qui sais-je encore
2. les droits/propriété ne sont pas identiques : il convient alors de mettre les mêmes droit/propriété sur les 2 fichiers et refaire un test. S'il s'avère qu'avec les mêmes droits/propriété le bug disparaît, c'est que le pb se trouvait à ce niveau là.
En fait, c'est pas parce que tu vois et tu accèdes sans souci à ce fichier en particulier que c'est vrai pour tous les utilisateurs déclarés sur ton système.
Si l'erreur est FileNotFound, c'est que le process qui cherche à y accéder ne le voit pas. S'il existe (car tu le vois) et que lui ne le vois pas, c'est que la solution se trouve au niveau des droits d'accès ou de la propriété (au sens appartenance).
Et ce n'est pas parce que deux fichiers sont dans le même dossier qu'ils partagent les mêmes droits et propriété. C'est donc pour ces raisons qu'il t'est conseillé de vérifier les droits et/ou la propriété.
Une fois que tu as vérifié ce point là, on a deux possibilités :
1. les droits/propriété sont identiques entre les deux fichiers cité en exemple : tu viens de mettre le doigt sur un bug et il faut contacter java ou sun ou qui sais-je encore
2. les droits/propriété ne sont pas identiques : il convient alors de mettre les mêmes droit/propriété sur les 2 fichiers et refaire un test. S'il s'avère qu'avec les mêmes droits/propriété le bug disparaît, c'est que le pb se trouvait à ce niveau là.
J'apprécie bien ton analyse qui me semble bcp plus prof. Mais je n'ai jamais été confronté au pb de droits d'accès à un fichier depuis que je fais du développement en JAVA comme en PHP. Comment accéder au droit d'un fichier (pour supprimer par exemple ce droit) ?
Ce n'est pas un click droit sur le fichier ou alors il faut faire le parametrage ailleurs pour sauter ce droit ?
Ce n'est pas un click droit sur le fichier ou alors il faut faire le parametrage ailleurs pour sauter ce droit ?
Je viens de vérifier tous les droits et je me rend compte que j'ai un droit total sur tous mes fichiers. C'est ce que je ne comprends pas !
re
si tu es sous unix/linux/mac : dans un shell, tu fais ls -l et tu verras les droits s'afficher ainsi que les propriétaires (user & group)
si tu es sous windows, un click droit puis propriétés puis Sécurité te permettra de voir les droits. La notion de propriétaire n'est pas très importante dans Windows, tu peux t'en passer. Si tu veux y jeter un coup d'œil, cliquer Avancé puis onglet propriétaire pour voir qui est le proprio actuel...
si tu es sous unix/linux/mac : dans un shell, tu fais ls -l et tu verras les droits s'afficher ainsi que les propriétaires (user & group)
si tu es sous windows, un click droit puis propriétés puis Sécurité te permettra de voir les droits. La notion de propriétaire n'est pas très importante dans Windows, tu peux t'en passer. Si tu veux y jeter un coup d'œil, cliquer Avancé puis onglet propriétaire pour voir qui est le proprio actuel...