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

NetBeans Platform Java Discussion :

Problème avec EntityManager


Sujet :

NetBeans Platform Java

  1. #1
    Membre expérimenté
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Points : 1 540
    Points
    1 540
    Par défaut Problème avec EntityManager
    Bonjour,

    J'utilise le jdk 1.7.0_17 avec NetBeans 7.3, beansbinding, eclipselink connecté vers une base MySQL, Jasper, et Java FX 2.
    Dans mon projet, je m'appuie sur une instance d'EntityManager nommée entityManager1. L'ensemble de mon code fonctionne parfaitement bien. L'usage de BeansBinding est fonctionnel avec les EJB fournis par la persistence eclipse 2.1.
    Du moins, tout fonctionne parfaitement lorsque j'exécute mon code dans NetBeans.
    Lorsque je l'exécute en dehors de NetBeans, un problème survient avec la méthode getProperties() de entitymanager1 sensé renvoyer une instance de Map ?!...
    Dans mon code, je dois à un moment donné, créer une instance de java.sql.Connection (J'utilise Jasper, c'est lui qui en a besoin). Pour ne pas créer cette connexion à partir de constantes chaînes dans mon code, j'utilise la méthode getProperties() de la classe javax.persistence.EntityManager ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Map cartographie = entityManager1.getProperties();
            String url=cartographie.get("javax.persistence.jdbc.url").toString().split("\\?")[0];
            String passwd=cartographie.get("javax.persistence.jdbc.password").toString();
            String user=cartographie.get("javax.persistence.jdbc.user").toString();
    De cette manière, lorsque je change de situation géographique, il me suffit de corriger mon fichier de persistence.
    Donc, comme dit plus haut, aucun problème à l'exécution de ce code dans NetBeans. Et voilà ce que j'obtiens en dehors de NetBeans :

    Exception in thread "AWT-EventQueue-0" java.lang.NoSuchMethodError: javax.persistence.EntityManager.getProperties()Ljava/util/Map;
    at GUI.ModuleReedtEtq.panneauReedtEtq.jButton3ActionPerformed(panneauReedtEtq.java:268)....

    ???
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    getProperties n'existe qu'à partir de java EE 6. Je suppose que "en dehors de netbeans" t'as balancé ton code sur un serveur J2EE 5 et non J2EE 6

  3. #3
    Membre expérimenté
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Points : 1 540
    Points
    1 540
    Par défaut
    Merci pour votre réponse.
    Elle me permet de comprendre que j'ai bien interprété le message d'erreur. Cette méthode, à cet instant n'existe pas.
    Cependant, je ne comprends pas. La machine sur laquelle se produit ce phénomène ne dispose que d'un JDK 1.7 et une jre 1.7. Voici l'arborescence de mon dossier programmes :

    c:\Programmes\Java\Java3D
    c:\Programmes\Java\jdk1.7.0_17
    c:\Programmes\Java\jre7


    Voici le résultat de la ligne de commande java -version :

    java version "1.7.0_17"
    Java(TM) SE Runtime Environment (build 1.7.0_17-b02)
    Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)


    Et voici le contenu du tableau récapitulatif des paramètre de Java Runtime Environment via le panneau de configuration de Windows :

    Plate-forme : 1.7
    Produit : 1.7.0_17
    Emplacement :
    http://java.s...
    Chemin : C:\Program Files\...
    Paramètres d'éxé. : aucun
    Activé : oui

    Mon code a été développé et exécuté sur cette machine...
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    JE parle bien de java enterprise 7, pas de la jre. La JRE toute seule ne dispose pas de la classe EntityManager. Comment tu amène les specs J2EE dans ton application? Tu la déploie dans une conteneur? Tu rajoute des librairies au classpath?

    Dans le dernier cas, tu devrais inspecter tes classe. Je parie que tu as 2 jars différent qui fournissent chacun une version différente de EntityManager et le hasard fait que dans Netbeans le premier jar lu n'est pas le même qu'en standalone.

  5. #5
    Membre expérimenté
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Points : 1 540
    Points
    1 540
    Par défaut
    Ok, je comprends.
    En fait, il s'agit d'une application autonome. Qui doit s'exécuter sur le poste utilisateur dans un environnement unique jre 1.7. Quand au packaging de l'application, toutes les librairies tiers sont bien déclarées et finissent dans le dossier lib accompagnant l'application. Et dans les meta-inf de l'application, chaque jar est définit dans le classpath. C'est en fait NetBeans qui fait tout cela. Moi je me contente de renseigner les propriétés du projet en ajoutant ou retirant les librairies nécessaires, NetBeans se charge de tout rassembler dans un dossier lib. Donc, normalement, la machine virtuelle java dispose de tout la matériel.
    Mais c'est probablement la bonne piste, j'ai de toute évidence une différence de version dans ma persistance entre mon environnement locale, et mon environnement de développement Netbeans.
    Je continue de chercher...
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Si t'as une class en double entre deux libriaries (ce qui arrive plus vite qu'on ne le croit), tu peux avoir exactement les même jars de chaque coté (netbeans / standalone), comme le classloader ne garantit rien sur l'ordre de chargement, tu peux avoir un comportement différent entre les deux modes d'exécution.

  7. #7
    Membre expérimenté
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Points : 1 540
    Points
    1 540
    Par défaut
    C'était bien ça. Merci Tchize.
    J'ai trouvé le jar perturbateur, et après l'avoir supprimé, ça fonctionne parfaitement.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

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

Discussions similaires

  1. Problème avec entityManager.find()
    Par Reisors dans le forum JPA
    Réponses: 5
    Dernier message: 05/03/2014, 17h03
  2. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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