IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web en Java Discussion :

Comment organiser mon projet pour ouvrir un fichier ?


Sujet :

Développement Web en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 47
    Par défaut Comment organiser mon projet pour ouvrir un fichier ?
    Bonjour à tous, je vous explique mon problème.
    Contexte : Eclipse, JAVA/J2E, tomcat 7

    J'ai crée une application web (Dynamic Web Project sous eclipse) qui dépend d'un second projet java, qui est composé uniquement de classes et de fichier sql.
    Pour faire en sorte le premier projet dépende bien du second projet, j'ai :
    - Clic droit sur le projet
    - Properties
    - Clic sur l'onglet "Deployment Assembly.
    - Et là j'ajoute le projet en dépendance.


    Cela fonctionne très bien, c'est à dire que mon premier projet peut utiliser les classes du second projet sans problème.
    Seulement, lorsque je déploie le tout dans Tomcat (en utilisant Eclipse Kepler), toutes les dépendances se trouvent dans le dossier lib du premier projet, sous forme de ".jar". Donc je me retrouve avec mon second projet avec l'extension ".jar". Pour utiliser les classes de ce projet cela ne pose pas de problème, par contre il est impossible d'ouvrir les fichiers sql. Je me retrouve avec cette exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Le fichier contenant la requête de recherche nest pas trouvé à lemplacement : file:/D:/devJava/applications2/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/genesisExtranetENDU-struts/WEB-INF/lib/genesisExtranetENDU-business.jar!/sirus/endu/business/dao/mesures/config/selectMesures.sql
    Du coup comment je pourrai faire pour que les 2 projets soit liés tout en pouvant les fichiers étant autres choses que des fichiers .class ?


    Merci d'avance de votre lecture

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    De toutes façons, dans une application web, tu n'es pas censé travailler avec des fichiers. Tout se trouve dans des jars, des wars, etc. Les apis File et Path ne fonctionneront que dans eclipse, parce que tu déploie directement depuis le projet en dev. Mais en production, avec un beau .war empaqueté comme il faut, ça ne marchera peut-être plus.

    Dans ton cas, vu le message, tu peux simplement lire ce fichier comme cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    InputStream is = getClass().getResourceAsStream("/sirus/endu/business/dao/mesures/config/selectMesures.sql");

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 47
    Par défaut
    Bonjour, merci de ta réponse.

    Lorsque tu dis que tout ce trouve dans des wars, des jars etc., je le conçois tout à fait. Seulement le war une fois déployé sur tomcat est "décompressé" en un dossier normal, dans lequel tu as accès à tous les fichiers le composant (les fichiers .class et tout type de fichiers)
    En fait, si j'utilise qu'un projet sans dépendance à tout autre projet, je peux sans problème ouvrir un fichier car il se trouvera dans le bon répertoire.
    Tandis que là, le second projet dépendant se transforme en lib .jar, ce que je souhaiterai du coup c'est d'avoir un war dans lequel se trouvent les 2 projets ? est-ce possible ? Je sais pas si j'ai été claire

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 47
    Par défaut
    Bon, j'ai finalement réussi à obtenir ce que je voulais.

    La solution a été de ne pas utiliser le tomcat fourni par défaut dans eclipse Kepler mais de passer par un plugin ("com.sysdeo.eclipse.tomcat_3.3.0").
    Grâce à ce plugin, j'indique que le premier projet est un projet tomcat, puis je lui ajoute les dépendance dans le DevLoader. Il y a plusieurs type de dépendances : Des librairies annexes ainsi que qu'un projet référencé. Et lorsque je référence un projet suivi de "/classes", apparemment il me met tout les fichier du second projet dans le dossier classe du premier projet, donc ca répond au problème !

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par hafizbe Voir le message
    Bonjour, merci de ta réponse.

    Lorsque tu dis que tout ce trouve dans des wars, des jars etc., je le conçois tout à fait. Seulement le war une fois déployé sur tomcat est "décompressé" en un dossier normal, dans lequel tu as accès à tous les fichiers le composant (les fichiers .class et tout type de fichiers)
    Même si c'est le cas avec tomcat:

    1) tu ne connais pas le folder => difficile de faire un new File() qui pointe sur le fichier
    2) ce n'est pas garanti avec les autres conteneurs web de se comporter comme cela, ce n'est pas couvert part la spec J2EE

    Citation Envoyé par hafizbe Voir le message
    En fait, si j'utilise qu'un projet sans dépendance à tout autre projet, je peux sans problème ouvrir un fichier car il se trouvera dans le bon répertoire.
    Qu'est-ce que tu appelle "le bon répertoire". La spec J2EE, encore uen fois, définis des points de contact précis pour accéder aux ressources. Soit via le Classloader pour tout ce qui concerne WEB-INF/classes et WEB-INF/lib, soit via ServletContext.getResource/getResourceAsStream pour le reste.

    Citation Envoyé par hafizbe Voir le message
    ce que je souhaiterai du coup c'est d'avoir un war dans lequel se trouvent les 2 projets ? est-ce possible ?
    Oui, mais cela n'a selon moi rien à voir avec ton problème. "fusionner" deux projet web, c'est ce que l'on fait quand, par exemple, l'une contient une partie des pages web, et l'autre le reste. Ce n'est pas le cas d'utilisation le plus commun et ça pose pas mal de soucis pour gérer les ficheirs en double, notemment le web.xml qui est présent dans les deux projets.

    Ce qu'il faudrait voir, c'est quel est ton besoin fonctionnel derrière pour apporter une réponse propre. Visiblement passer par les standards ne te convient pas, donc, quel est le besoin derrière. Devoir accéder sous forme de File, c'est une "mauvaise" solution à un besoin que tu n'as pas exprimé ici.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/08/2011, 11h16
  2. [Débutant] Comment générer mon projet pour qu'il tourne sur d'autres pc.
    Par Godzestla dans le forum C++Builder
    Réponses: 3
    Dernier message: 23/05/2011, 15h24
  3. Comment organiser mon projet
    Par Fenix01 dans le forum Langage
    Réponses: 3
    Dernier message: 08/08/2009, 15h21
  4. Comment organiser mon projet ?
    Par friandise dans le forum Django
    Réponses: 4
    Dernier message: 03/08/2009, 20h54
  5. [C#] Comment organiser mon projet ?
    Par lamyae_84 dans le forum Accès aux données
    Réponses: 8
    Dernier message: 30/08/2006, 09h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo