0
votes

La guerre déployée ne peut pas accéder à un fichier

J'ai une application de printemps et j'essaie d'accéder à un fichier JSON avec le code suivant: xxx

j'ai placé le fichier paramètre.json dans le dossier de projet et je ' m Accès des données de fichier à partir d'une application angulaire via une API de repos, et cela fonctionne bien lorsque j'exécute l'application sur la machine locale, mais lorsque je déploie le fichier de guerre sur Tomcat, mon application ne peut pas charger le fichier, dois-je mettre le paramètre. .json dossier ailleurs sur Tomcat ou quelle est la meilleure solution pour cela.


2 commentaires

Où dans votre dossier de projet avez-vous paramètre.json?


Votre code affiche les paramètres.json, tandis que votre description affiche le paramètre.json. Peut-être une faute de frappe?


4 Réponses :


1
votes

Essayez de mettre le fichier dans le dossier Ressources dans votre projet de printemps. Vous devriez être capable d'accéder au fichier de cet emplacement.


1 commentaires

Puis-je modifier un fichier dans un dossier Ressources lorsque l'application est emballée dans une guerre



2
votes

Votre question indique que vous essayez d'accéder à un fichier appelé paramètre.json em>, tandis que votre extrait de code indique paramètre s em> .j / em>. Peut-être que cette divergence indique une faute de frappe dans votre code source?

Sinon, il existe différentes façons d'accéder à un fichier de la classe de classe au printemps, avec la première étape de chaque être pour vous assurer que le fichier est dans le projet SRC / Main / Ressources em> répertoire. p>

Vous pouvez ensuite utiliser l'une des classes utilitaires de printemps CLASSPATHRESOURCE , RESOURCLOADER ou ResourceTtils Pour accéder au fichier. L'approche la plus facile, cependant, peut être de placer vos propriétés dans un fichier .properties em> (nom de fichier par défaut application.properties em>) et accédez aux valeurs à l'aide de Valeur Annotation : P>

@Configuration
@PropertySource(value = {"classpath:application.properties", 
    "classpath:other.properties"})
public class MyClass {

    @Value("${some.value.in.the.file}")
    private String myValue;

    ...
}


0 commentaires

2
votes

Assurez-vous que vos paramètres.josn FileName est exactement le même dans le code. Déplacez votre fichier de paramètres.json dans le dossier Ressources, puis utilisez la classe de classe avec le nom de fichier.

 try (FileReader reader = new FileReader("classpath:parameters.json")) {
   Object obj = jsonParser.parse(reader);
   parameterList = (JSONArray) obj;
 }


3 commentaires

salut, comment puis-je écrire un fichier de dossier de ressources


Puis-je modifier un fichier dans un dossier Ressources lorsque l'application est emballée dans une guerre


Vous devez utiliser un fichier externe à cette fin. Vous ne pouvez pas modifier la guerre / le pot en cours d'exécution.



1
votes

FileReader recherche un système de fichiers à part entière comme celui de votre ordinateur, mais lorsque votre guerre est déployée, il n'y en a tout simplement pas un, vous devez donc utiliser une approche différente. Vous pouvez saisir votre fichier directement à partir de votre dossier SRC / Main / Ressources comme celui-ci

InputStream inputStream = getClass().getResourceAsStream("/parameters.json");


3 commentaires

Puis-je modifier un fichier dans un dossier Ressources lorsque l'application est emballée dans une guerre


Malheureusement, non, vous devrez décompresser et remballer le pot / la guerre. Vous recherchez un moyen d'avoir un fichier que vous échangez sans avoir à redéployer l'application? Vous pouvez faire quelque chose comme ça, mais je pense que vous devez toujours redéployer: docs.oracle.com/javase/tatuny/deployment/jar/update.html


Cette page pourrait aider: docs.spring.io/spring-boot/docs/current/reeference/html/...