Chemin relatif dans un projet Maven JEE (IDE Eclipse)

kaka1989 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -  
kaka1989 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

j'ai un problème de création d'un File en utilisant chemin relatif dans une Beans.
j'ai mon Bean qui existe dans le dossier /src/main/java/service/FileUploadController.java de mon projet, et j'ai le dossier ou je veux Uploader les fichiers dedans qui exsite /WEB-INF/files

voila mon code :
file = File.createTempFile(prefix + "_", "." + suffix,new File("/WEB-INF/files"));
output = new FileOutputStream(file);
IOUtils.copy(uploadedFile.getInputstream(), output);

Exception :

java.io.IOException: Le chemin d'accès spécifié est introuvable
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(Unknown Source)
at java.io.File.createTempFile(Unknown Source)
at service.FileUploadController.handleFileUpload(FileUploadController.java:44)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.el.parser.AstValue.invoke(AstValue.java:277)
A voir également:

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonjour,

Tu ne peux pas accéder au contenu d'un jar/war/ear avec un chemin relatif, il faut que tu récupères la ressource avec le ClassLoader.

https://mkyong.com/java/java-getresourceasstream-in-static-method/
0
kaka1989 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
est ce que je doit remplacer config.properties par le nom de mon dossier ??
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Non, le fichier peut s'appeler config.properties ça ne pose pas de problème.
Par contre il doit être placé dans le bon dossier. Avec Maven ça devrait être src/main/resources
0
kaka1989 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
le chemin src/main/ressources n'existe pas dans le projet ,et je veux le chemin relatif de dossier files
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Si le chemin n'existe pas tu peux le créer !
Mais mettre un fichier de ressources ailleurs, par exemple dans ton dossier files, ce n'est pas propre, les projets Maven sont fait de tels sortes que l'architecture soit respectée. Si tu veux faire ta propre configuration, n'utilise pas Maven...

À voir : La structure de répertoires Maven 2
0
kaka1989 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
si j'ai bien compris je doit modifier le code comme suite :
public String getFilePathToSave() {

Properties prop = new Properties();
String filePath = "";

try {

InputStream inputStream =
getClass().getClassLoader().getResourceAsStream("src/main/resources");

prop.load(inputStream);
filePath = prop.getProperty("json.filepath");

} catch (IOException e) {
e.printStackTrace();
}

return filePath;

}
0