2017-09-15 2 views
0

Il y a un fichier JSON dans ma guerre à l'emplacement suivantImpossible de charger un fichier à l'emplacement WEB-INF

WEB-INF/classes/META-INF/jsonFolder/file.json 

Je suis en train d'accéder au fichier en utilisant le chemin et la méthode suivante pour charger mon fichier.

public static File deserializeJSONFile() throws IOException { 
    File file = null; 
    OutputStream outStream = null; 
String jsonPath = "jsonFolder/file.json"; 
try (InputStream inputStream = Thread.currentThread().getContextClassLoader() 
      .getResourceAsStream(jsonPath)) { 
     in = inputStream; 
     if (in != null) { 
      byte[] bufferArray = new byte[in.available()]; 
      in.read(bufferArray); 
      file = new File("tempJsonFile.json"); 
      outStream = new FileOutputStream(file); 
      outStream.write(bufferArray); 
     } 
    } finally { 
     if (outStream != null) { 
      outStream.close(); 
     } 
    } 
    if (null == in) { 
     String errorMessage = "JSON file: " + jsonPath + " could not be loaded"; 
     FileNotFoundException fileNotFoundException = new FileNotFoundException(errorMessage); 
     logger.error(errorMessage, fileNotFoundException); 
     throw fileNotFoundException; 
    } 
    return file ; 
    } 

avec lequel passent tous mes tests unitaires. Au déploiement de mon application, je vois l'exception de fichier non trouvé pour jsonFolder/file.json. Lorsque j'ai tracé l'emplacement réel comme où il cherche, il regarde,

C:\Program Files\eclipse-mars\jsonFolder\file.json 

ce qui est incorrect. J'ai essayé différentes méthodes de classloader mais cela n'a pas aidé. Une règle est que je ne devrais pas modifier pom.xml pour que cela fonctionne. Comment puis-je charger le fichier?

+0

Pouvez-vous nous indiquer le code approprié? Ce code ne compile pas, étant donné qu'il manque '' 's' 's' '' 's' –

+0

Ajout du code – yellow

+0

Ce n'est pas encore valide: 'String jsonPath = jsonFolder/file.json' –

Répondre

0

Il y a un fichier JSON dans ma guerre à l'emplacement suivant

WEB-INF> classes-> META-INF> jsonFolder-> file.json

donc son nom en tant que ressource est META-INF/jsonFolder/file.json. Pas ce que vous avez dans votre code.

+0

Comme je l'ai dit, cela fonctionne très bien dans mes tests unitaires, car il est disponible dans mon dossier cible.Quand je paquet à une guerre et le déployer sur tomcat, c'est quand je vois cette erreur – yellow

+0

java.io.FileNotFoundException : JSON: jsonFolder/file.json n'a pas pu être chargé \t à .... NegotiationUtil.deserializeJsonFile (NegotiationUtil.java:71) \t à .... ResourceManager (ResourceManager.java:128) ici. le fichier deserializeJsonFile() i s l'implémentation illustrée ci-dessus dans le bloc try. – yellow

+1

Vous avez donc lancé cette exception vous-même? Impossible de voir cela dans le code. Difficile d'aider lorsque vous ne fournissez pas toutes les informations pertinentes. – EJP