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

API standards et tierces Java Discussion :

API Commons Math 3 (Apache) - Utilisation


Sujet :

API standards et tierces Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Analyste
    Inscrit en
    Février 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste
    Secteur : Service public

    Informations forums :
    Inscription : Février 2015
    Messages : 7
    Points : 4
    Points
    4
    Par défaut API Commons Math 3 (Apache) - Utilisation
    Bonjour,

    Je débute en Java. J'ai téléchargé la librairie Commons Math d'Apache car j'ai besoin d'exécuter des calculs statistiques et autant ne pas réinventer la poudre.

    J'utilise Eclipse. J'ai inséré la librairie dans mon buildpath comme il est de rigueur. Il ya toute une série de package et, de ce que j'ai compris, il faut que je déclare le package que je veux utiliser à ma méthode sans quoi elle ne reconnait pas les méthode que je veux utiliser. Je fais comme suit.

    package org.apache.commons.math3.stat.descriptive;

    Eclipse me répond alors : The declared package "org.apache.commons.math3.stat.descriptive" does not match the expected package "".

    Savez-vous quelle erreur je commets ?

    Merci d'avance,
    Benoît

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    L'instruction package permet de définir le package de ton propre code, et doit correspondre à ton arborescence.

    Pour utiliser d'autres classes, il faut utiliser des imports en précisant le nom de la classe (ou *) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import org.apache.commons.math3.stat.descriptive.*;

    a++

  3. #3
    Candidat au Club
    Homme Profil pro
    Analyste
    Inscrit en
    Février 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste
    Secteur : Service public

    Informations forums :
    Inscription : Février 2015
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Salut,


    L'instruction package permet de définir le package de ton propre code, et doit correspondre à ton arborescence.

    Pour utiliser d'autres classes, il faut utiliser des imports en précisant le nom de la classe (ou *) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import org.apache.commons.math3.stat.descriptive.*;

    a++
    Bonjour adiGuba et merci pour votre réponse.

    Malheureusement, ça ne fonctionne pas. j'obtiens la même erreur. Je pense que j'ai dû faire une erreur au moment de l'insertion de la librairie Commons Math dans mon build path. Voici un screenshot qui, peut-être, permettra de comprendre l'erreur. Notez que j'ai inséré une librairie pour la connexion avec ma base de données en MySQL mais, pour ce faire, je suis passé par un fichier d'installation Microsoft (.msi) tandis que, pour Commons Math, j'ai téléchargé un fichier compressé puis importé dans les referenced librairies.

    Pièce jointe 169937
    Images attachées Images attachées  

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    C'est vraiment la même erreur ???

    Sinon le screenshot ne sert pas à grand chose, puisqu'on n'y voit ni l'erreur ni le code...
    (et un copier/coller serait plus efficace)




    a++

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Citation Envoyé par bcollet Voir le message
    ... tandis que, pour Commons Math, j'ai téléchargé un fichier compressé puis importé dans les referenced librairies.
    Dezippe le fichier commons-math3-3.4.1-bin.zip (ou detar le tag.gz), et monte dans ton buildpath le commons-math3-3.4.1.jar qui s'y trouve.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Candidat au Club
    Homme Profil pro
    Analyste
    Inscrit en
    Février 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste
    Secteur : Service public

    Informations forums :
    Inscription : Février 2015
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    C'est vraiment la même erreur ???

    Sinon le screenshot ne sert pas à grand chose, puisqu'on n'y voit ni l'erreur ni le code...
    (et un copier/coller serait plus efficace)




    a++

    Oups, sorry. Voici le code. Je n'ai pas inséré de méthode issue de Commons Math puisque l'erreur The declared package "org.apache.commons.math3.stat.descriptive" does not match the expected package "" apparaît avec ou sans le .* que vous m'avez suggéré.

    J'ai pourtant bien inséré dans mes Referenced libraries commons-math3-3.4.1.jar.

    Voilà. J'espère que vous allez voir ce qui cloche.

    Merci d'avance.
    B. Collet


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    package org.apache.commons.math3.stat.descriptive;
     
    import java.sql.*;
    import java.lang.Math;
     
    public class TestCon {
    	public static void main(String[] args) {
    		String url="jdbc:mysql://localhost/leodica10?";
    		String user="root";
    		String pwd="";
    		int i=0,pos=0,j=0;
    		double Q1=0,Q2=0,Q3=0,min=0,max=0,somme=0,som_avg=0,moyenne=0,variance=0,ecart_type=0;
    		Connection cn=null;
    		Statement st=null;
    		ResultSet rs=null;
    		ResultSetMetaData metadata=null;
     
    		try {
    			// Class.forName("com.mysql.jdbc.Driver");
    			cn=DriverManager.getConnection(url, user, pwd);
    			st=cn.createStatement();
    			String sql="SELECT vapo FROM leodica10.leodouze WHERE secteur IN ('01','02','03') and vapo IS NOT NULL ORDER BY vapo;";
    			rs=st.executeQuery(sql);
    			metadata=rs.getMetaData();
    			rs.last();
    			int nb_lgn=rs.getRow();
    			rs.beforeFirst();
    			double vapo[]=new double[nb_lgn];
    			System.out.println("Nombre de valeurs : "+nb_lgn);
    			while(rs.next()) {
    				vapo[i]=rs.getDouble("vapo");
    				somme+=vapo[i];
    				i++;
    			}
     
    			System.out.println("Total vapo : "+Math.floor(somme));
    			moyenne=somme/nb_lgn;
    			pos=(int) Math.floor(nb_lgn/4);
    			Q1=vapo[pos];
    			pos=(int) Math.floor(nb_lgn/2);
    			Q2=vapo[pos];
    			pos=(int) Math.floor(nb_lgn/2+nb_lgn/4);
    			Q3=vapo[pos];
    			for(i=0;i<nb_lgn-1;i++)
    				som_avg+=Math.pow((vapo[i]-(somme/nb_lgn)),2);
    			variance=som_avg/nb_lgn;
    			ecart_type=Math.sqrt(variance);
    			System.out.println("\nMoyenne : "+moyenne+"\nMinimum : "+vapo[0]+"\nQuartile 1 : "+Q1+"\nMédiane : "+Q2+"\nQuartile 3 :"+Q3+"\nMaximum : "+vapo[nb_lgn-1]+"\nVariance : "+variance+"\nEcart-type : "+ecart_type);
    		} catch (SQLException e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				cn.close();
    				st.close();
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    }

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Je répète, en développant, ce qui a été dit :

    1. Le package d'une classe doit correspondre à l'arborescence physique des dossiers dans lequel le fichier .java qui la définit se trouve.

      Ta classe TesCon déclare être dans le package org.apache.commons.math3.stat.descriptive, puisque c'est ce que tu as dans ton code : le fichier TesCon.java doit donc être dans un dossier appelé descriptive, lui-même dans un dossiet stat, lui-même dans un dossier math3, lui-même dans un dossier commons, lui-même dans un dossier apache, lui-même dans un dossier org.

      En général, le package correspond à une arborescence personnelle, genre net.monapplication : pas besoin qu'il corresponde à celui des classes qu'on utilise (surtout que ça deviendrait vite impossible si on voulait utiliser plusieurs bibliothèques). On peut, lorsqu'on a qu'une seule classe, ou quelques unes, ne pas utiliser de package du tout, et mettre le fichier .java à la racine (directement dans le dossier src du projet dans l'IDE). mais dès qu'elles se multiplient, ça devient fastidieux de s'y retrouver, alors on fait plusieurs dossiers, donc des packages.

    2. lorsqu'on utilise une classe dont le fichier .java ne se trouve pas dans le même package que la classe qui doit l'utiliser, il faut l'importer, ou la référencer dans le code par son nom complet, y compris le package.

      Par exemple, pour utiliser la classe org.apache.commons.math3.stat.descriptive.DescriptiveStatistics, il faut :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      package net.monapplication;
       
      import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics;
       
      public class Test {
       
         public static void main(String[] args) {
       
             DescriptiveStatistics desc = new DescriptiveStatistics();
       
         }
       
      }
      sinon il faudrait :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      package net.monapplication;
       
      public class Test {
       
         public static void main(String[] args) {
       
              org.apache.commons.math3.stat.descriptive.DescriptiveStatistics desc = new org.apache.commons.math3.stat.descriptive.DescriptiveStatistics();
       
         }
       
      }
      On peut importer toutes les classes d'un package avec .* :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      package net.monapplication;
       
      import org.apache.commons.math3.stat.descriptive.*;
       
      public class Test {
       
         public static void main(String[] args) {
       
              DescriptiveStatistics desc = new DescriptiveStatistics(); // ça fonctionne parce que cette classe est dans org.apache.commons.math3.stat.descriptive
       
         }
       
      }
      Le fichier Test.java étant, dans les trois exemples, dans un dossier monapplication, lui-même dans un dossier net (dans un IDE, ce dernier sera dans le dossier src du projet).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  8. #8
    Candidat au Club
    Homme Profil pro
    Analyste
    Inscrit en
    Février 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste
    Secteur : Service public

    Informations forums :
    Inscription : Février 2015
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Là, je comprends mon erreur.

    Un tout grand merci.

    Maintenant, je vais pouvoir tenter de comprendre comment utiliser proprement toutes ces méthodes et ces classes. ;-)

    Bien cordialement,
    B. Collet

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

Discussions similaires

  1. Régression d'ordre 2 avec Apache Commons Math
    Par mydomdom dans le forum Général Java
    Réponses: 1
    Dernier message: 17/02/2015, 17h07
  2. Utilisation de l'API Commons Math
    Par gstratege dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 31/10/2011, 00h26
  3. [Commons Math] Comment utiliser les optimiseurs
    Par Ceubex dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 14/07/2010, 23h25
  4. Réponses: 1
    Dernier message: 21/06/2006, 14h10
  5. [Apache] utiliser MySQL
    Par sebduth dans le forum Apache
    Réponses: 3
    Dernier message: 04/08/2004, 10h17

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