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

Langage Java Discussion :

Utilité de la méthode main et compilation des sources Java sur le site


Sujet :

Langage Java

  1. #1
    bruce-willis
    Invité(e)
    Par défaut Utilité de la méthode main et compilation des sources Java sur le site
    Je me demande à quoi sert vraiment la méthode main.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	public static void main(String[ ] Args) {
    		LinkedList Lifo = new LinkedList( );
    		System.out.println("Initialisation de la pile par ces valeurs:");
    		initialiserPile(Lifo);
    		VoirLifo(Lifo);
    	}
    A quoi sert l'argument qui est toujours String[] et main est-il l'équivalent de BEGIN END. de Pascal.
    Une question en relation avec: j'ai voulu tester les codes sources Java sur developpez.com, les fichiers Java se compilent bien
    par ex, le code suivant (Picture) dans java.developpez.com
    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
     
    import java.awt.*;
    import javax.swing.*;
     
    public class Picture extends JPanel {
      private Image img;      
     
      public Picture(String file) {
        img = new ImageIcon(getClass().getResource(file)).getImage();
        repaint(); 
      }  
     
      public void paintComponent(Graphics g) {
        super.paintComponent(g);
        if (img == null) return;
        int w = img.getWidth(this);  
        int h = img.getHeight(this);
        boolean zoom = (w > getWidth() || h > getHeight());
        if (zoom) g.drawImage(img, 0, 0, getWidth(), getHeight(), this);
        else g.drawImage(img, (getWidth()-w)/2, (getHeight()-h)/2, this);
      }
    }
    mais lorsqu'on veut les exécuter il y a l'erreur:

    java.lang.NoSuchMethodError: main
    Exception in thread "main"

    Pourquoi ??

  2. #2
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    Salut,

    La méthode main est le point d'entrée de tous programme Java. Lorsqu'on lance un programme Java avec la commande :
    La JVM (Java Virtual Machine) recherche une méthode dont la signature est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static void main(String[] args)
    et ceci afin de l'exécuter. Si cette méthode est abscente , tu obtiens le message d'erreur que tu as eu en essayant d'exécuter la classe Picture.

    Pour ce qui est des paramètres de la méthode main, il s'agit en fait d'arguments qu'on peut passer au programme lors de son lancement, par exemple si on considère le programme suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class Test{
         public static void main(String[] args){
                System.out.println(args[0]);
                System.out.println(args[1]);
         }
    }
    et qu'on le lance avec la commade suivante :
    java Test toto titi
    On obtient l'affichage suivant :
    toto
    titi
    J'espère que j'ai été assez clair...

    @+


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  3. #3
    Membre averti Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Points : 323
    Points
    323
    Par défaut
    Les codes sources présents sur le site ne sont pas tous des programmes exécutables par la JVM, mais des classes. Ce qui veut dire que pour tester ces programmes, tu dois toi-même ajouter un main ou faire un programme qui teste ces classes.
    "Et tu comprendras pourquoi mon nom est l'Eternel, quand sur toi s'abattra la colère du Tout-puissant."

  4. #4
    bruce-willis
    Invité(e)
    Par défaut
    Merci pour ces explications sur la méthode main !

    J'ai compris donc que les sources ici sont des classes à utiliser par exemple ce code que j'ai présenté.
    Mais si j'inclus une méthode main dedans cette classe Picture marchera-t-il car en fait, j'ai aussi testé un source sur le jeu tétris (JTris) et il ne comporte pas de main() .

    Ok !

  5. #5
    Membre averti Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Points : 323
    Points
    323
    Par défaut
    S'il ne comporte pas de main et qu'il s'exécute, c'est que cela doit être un Applet : une application graphique qui construit lui-même un main implicite (qui ne fait que lancer une instance de la classe).

    La classe picture est un JPanel, pour la tester tu dois le faire dans une interface graphique, ou dans un main construisant une interface comprenant une Picture.
    "Et tu comprendras pourquoi mon nom est l'Eternel, quand sur toi s'abattra la colère du Tout-puissant."

  6. #6
    bruce-willis
    Invité(e)
    Par défaut
    Maintenant, j'ai tout compris !

    C'est le début de l'ère Java (je deteste .net) !
    Merci !

  7. #7
    bruce-willis
    Invité(e)
    Par défaut
    Bonjour, je reviens sur cette discussion

    Comment j'implémente alors cette classe Picture de Michel Deriaz que j'ai posté au 1er message ?
    J'ai créé un programme fenêtré (swing) avec méthode bien sur et je veux afficher une image de classe Picture dans cette fenêtre.

    J'ai pensé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    Picture sary;
     
      void jButton1_actionPerformed(ActionEvent e) {
        sary=new Picture("C:\\angela.jpg");
        sary.setVisible(true);
        contentPane.add(sary,null);
      }
    Cela n'affiche rien, contentPane est un JPanel qui sert de conteneur sur un JFrame.

  8. #8
    Membre averti Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Points : 323
    Points
    323
    Par défaut
    Es-tu sûr que c'est bien ta méthode jbutton1_actionPerformed qui est appelée lors du clic sur ton bouton ? Fait un print pour le savoir. Ensuite, est-ce que contentPane est le résultat de frame.getContentPanel(), où frame est ta JFrame ?
    "Et tu comprendras pourquoi mon nom est l'Eternel, quand sur toi s'abattra la colère du Tout-puissant."

  9. #9
    bruce-willis
    Invité(e)
    Par défaut
    http://www.developpez.net/forums/sho...d.php?t=355773

    Bonjour,

    Je suis sur de jbutton1_actionPerformed mais c'est pas le problème. Je veux

    utiliser cette classe Picture pour afficher une image et je veux le placer sur une

    fiche JFrame.

    2ème source dans un applet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Picture sary;
     
    .......
     
      public void paint(Graphics g){
        sary=new Picture("C:\\angela.jpg");
        sary.setVisible(true);
        sary.paintComponent(g);
      }

  10. #10
    Membre averti Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Points : 323
    Points
    323
    Par défaut
    En mettant null au Layout, il est possible que ta Picture n'apparaisse pas sur l'interface grahique. Essaie d'agrandir ta fenêtre ou de spécifier un autre Layout.
    "Et tu comprendras pourquoi mon nom est l'Eternel, quand sur toi s'abattra la colère du Tout-puissant."

  11. #11
    bruce-willis
    Invité(e)
    Par défaut
    Mon problème c'est comment dessiner ou placer un composant Picture sur une fiche (Frame). Je suis sûr que ce n'est pas un problème de Layout !
    En fait, si vous avez visionné le code de la classe Picture, à quoi la méthode paintComponent sert-elle et est-ce qu'il faut l'appeler dans la fiche où on va poser le composant Picture.
    Ca fait toujours l'exception: Exception in thread "main"

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/05/2015, 17h45
  2. [Kylix] Compiler des sources Delphi pour Linux
    Par Tchief dans le forum EDI
    Réponses: 4
    Dernier message: 09/10/2006, 19h32
  3. Besoin d'aide pour compiler des sources
    Par Fabouney dans le forum C
    Réponses: 9
    Dernier message: 26/07/2006, 00h02
  4. Compilation des sources svn avec monodevelop
    Par gege2061 dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 28/03/2006, 16h29
  5. [Compilateur]Problème de compilation des sources...
    Par Dimanche dans le forum Général Java
    Réponses: 6
    Dernier message: 15/03/2005, 23h04

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