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

avec Java Discussion :

Erreur d'exécution d'une applet signée


Sujet :

avec Java

  1. #1
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Points : 891
    Points
    891
    Par défaut Erreur d'exécution d'une applet signée
    Bonjour,

    Tout d'abord posons le contexte.

    Je suis débutant en JAVA, et c'est vraiment mon premier projet.
    J'ai besoin pour un projet intranet web, d'intégrer un moyen de lancer une ligne de commande depuis une interface web.
    Seul moyen de le faire est de passer par la création d'une applet Java signée pour qu'elle soit autorisée à faire des action sur le poste client.

    J'ai donc créé un premier programme qui fonctionne bien tant que j'intègre le .class dans mes pages web, mais qui ne peut exécuter les commandes coté client du fait que je n'ai pas encore créé de .jar et signée mon appli.

    J'ai bien compris comment signé un .jar mais je n'ai pas réussis à le rendre éxécutable (problème de manifest et/ou de code)
    En effet lors de toute mes tentatives une erreur ressort :
    Exception in thread "main" java.lang.Error: Unresolved compilation problem:
    Cannot make a static reference to the non-static method init() from the
    type LanceAppli

    at LanceAppli.main(LanceAppli.java:21)
    Bien que je comprenne ce que ca veut dire je ne sais pas comment résoudre mon problème.
    ci après mon code java :
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
     
    import java.applet.*;
    import java.awt.*; 
    import java.awt.event.*;
    import java.net.*;
     
    public class LanceAppli extends Applet implements TextListener, ActionListener {
     
    	/**
             * 
             */
    	private static final long serialVersionUID = -7712116006950478375L;
    	/**
             * @param args
             */
    	TextField login,pwd;
    	Button validation, annulation;
    	String commande,cmd;
     
     
    	public void init() {
     
    		// TODO Auto-generated method stub
    		if (getParameter("commande")!=null)
    		{
    		cmd=getParameter("commande") ;
    		}
    		else
    		{   
    			//annuler();
    			cmd="notepad";
    		}
     
    		if (cmd!=null){
    		setBackground(Color.orange);
    		add(new Label("Identifiant : "));
    		add(login = new TextField(20));
    		add(new Label("Mot de passe : "));
     
    		add(pwd = new TextField(20));
    		add(validation = new Button ("Valider"));
    		add(annulation = new Button ("Annuler"));
    		validation.addActionListener(this);
    		annulation.addActionListener(this);
     
    		}
     
     
     
    	}
     
    	public void actionPerformed(ActionEvent e) {
    		commande = e.getActionCommand();
     
    		if (commande.equals("Valider"))
    		{
    			valider();
    		}
    		else
    		{
    			annuler();
    		}
     
     
    	}
     
    	public void valider() 
    	{
     
    		try {  
    			Runtime.getRuntime().exec(cmd);  
    			} catch (Exception e)
    			{
    				try
    				{
    					getAppletContext().showDocument(new URL("javascript:console.log("+e.getMessage()+")"));
    				}
    				catch (MalformedURLException me) { }
    			}
     
    		try {
    		      getAppletContext().showDocument
    		        (new URL("javascript:LANCEAPPLI.valider('valider')"));
    		      }
    		    catch (MalformedURLException me) { }
     
    	}
    	public void annuler()
    	{
    		try {
    		      getAppletContext().showDocument
    		        (new URL("javascript:LANCEAPPLI.annuler('annuler')"));
    		      }
    		    catch (MalformedURLException me) { }
    	}
     
    	public void textValueChanged(TextEvent e) {
    		// TODO Auto-generated method stub
     
    	}
     
    }
    Merci d'avance pour vos explications

  2. #2
    Membre averti Avatar de toutgrego
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2013
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 217
    Points : 350
    Points
    350
    Par défaut
    Salut,

    on peut voir ton main ?

    tchao !
    F*ck it ! Do it !

  3. #3
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Points : 891
    Points
    891
    Par défaut
    je n'en avais pas mis,

    Comme ca?
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    import java.applet.*;
    import java.awt.*; 
    import java.awt.event.*;
    import java.net.*;
     
    public class LanceAppli extends Applet implements TextListener, ActionListener {
     
    	/**
             * 
             */
    	private static final long serialVersionUID = -7712116006950478375L;
    	/**
             * @param args
             */
    	TextField login,pwd;
    	Button validation, annulation;
    	String commande,cmd;
     
    	public static void main(String[] args){}
     
    	public void init() {
     
    		// TODO Auto-generated method stub
    		if (getParameter("commande")!=null)
    		{
    		cmd=getParameter("commande") ;
    		}
    		else
    		{   
    			//annuler();
    			cmd="notepad";
    		}
     
    		if (cmd!=null){
    		setBackground(Color.orange);
    		add(new Label("Identifiant : "));
    		add(login = new TextField(20));
    		add(new Label("Mot de passe : "));
     
    		add(pwd = new TextField(20));
    		add(validation = new Button ("Valider"));
    		add(annulation = new Button ("Annuler"));
    		validation.addActionListener(this);
    		annulation.addActionListener(this);
     
    		}
     
     
     
    	}
     
    	public void actionPerformed(ActionEvent e) {
    		commande = e.getActionCommand();
     
    		if (commande.equals("Valider"))
    		{
    			valider();
    		}
    		else
    		{
    			annuler();
    		}
     
     
    	}
     
    	public void valider() 
    	{
     
    		try {  
    			Runtime.getRuntime().exec(cmd);  
    			} catch (Exception e)
    			{
    				try
    				{
    					getAppletContext().showDocument(new URL("javascript:console.log("+e.getMessage()+")"));
    				}
    				catch (MalformedURLException me) { }
    			}
     
    		try {
    		      getAppletContext().showDocument
    		        (new URL("javascript:LANCEAPPLI.valider('valider')"));
    		      }
    		    catch (MalformedURLException me) { }
     
    	}
    	public void annuler()
    	{
    		try {
    		      getAppletContext().showDocument
    		        (new URL("javascript:LANCEAPPLI.annuler('annuler')"));
    		      }
    		    catch (MalformedURLException me) { }
    	}
     
    	public void textValueChanged(TextEvent e) {
    		// TODO Auto-generated method stub
     
    	}
     
    }

  4. #4
    Membre averti Avatar de toutgrego
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2013
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 217
    Points : 350
    Points
    350
    Par défaut
    En fait ce qu'il m’intéresse de savoir c'est comment lances tu ta méthode init(). Je crois que tu dois pas l'invoquer de la bonne façon c'est tout =)
    F*ck it ! Do it !

  5. #5
    Membre averti Avatar de toutgrego
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2013
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 217
    Points : 350
    Points
    350
    Par défaut
    Et ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    catch (XXXException m)x { }
    C'est à éviter dans TOUS les cas, tu ne sauras pas quel est ton erreur et d'où elle vient si il y a un problème. x)
    F*ck it ! Do it !

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    765
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 765
    Points : 1 036
    Points
    1 036
    Par défaut
    main étant static, tu ne peux pas appeler init qui n'est pas static sans instancier l'objet.

  7. #7
    Membre averti Avatar de toutgrego
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2013
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 217
    Points : 350
    Points
    350
    Par défaut
    Oui précisément, tu peux faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    LanceAppli app = new LanceAppli ();
    app.init();
    Mais pas :

    et encore moins :

    F*ck it ! Do it !

  8. #8
    Membre averti Avatar de toutgrego
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2013
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 217
    Points : 350
    Points
    350
    Par défaut
    t'as tenté de mettre init() en statique ?
    F*ck it ! Do it !

  9. #9
    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 crois qu'on est occupé de tout mélanger là.

    Tout d'abord tu ne dois pas avoir de main. Un applet n'a pas de main, ça ne sert à rien. Pour la même raison, tu n'a pas besoin de créer un Manifest.

    Tu dois simplement créer ton jar, puis dans ta page web mentionner ton jar et la classe de ton applet.



    Quand à tes message d'erreur, il précisent que ton main est static, qu'il ne peux donc pas appelr directement init, car il faut d'abord créer un instance de LanceAppli. Mais comme t'as pas besoin de main, on s'en fou

  10. #10
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Points : 891
    Points
    891
    Par défaut
    mouais mouais mouais, concretement je dois faire quoi dans ma page web, comment je lui dit "tu charge mon LanceAppli.jar, et tu exécute mon init()"?

    là actuellement dans mon html j'ai ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <APPLET CODE="LanceAppli.jar" WIDTH=300 HEIGHT=150 ALIGN=top style=" border:solid 1px black">  
    <PARAM NAME="authentification" VALUE="true">
    <PARAM NAME="commande" VALUE="notepad">
    </APPLET>
    qu'est ce qui manque?

    merci

  11. #11
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <APPLET code="tonpackage.TonApplet"
        archive="LanceAppli.jar" WIDTH=300 HEIGHT=150 ALIGN=top style=" border:solid 1px black">  
    <PARAM NAME="authentification" VALUE="true">
    <PARAM NAME="commande" VALUE="notepad">
    </APPLET>

Discussions similaires

  1. Réponses: 6
    Dernier message: 15/07/2010, 11h48
  2. Exécution d'une applet
    Par Adela dans le forum Applets
    Réponses: 1
    Dernier message: 03/04/2006, 07h04
  3. [MySQL] Message d'erreur à l'exécution d'une requête
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 28/02/2006, 14h06
  4. Réponses: 2
    Dernier message: 08/08/2005, 21h30
  5. Message d'erreur à l'exécution d'une install
    Par titof dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 22/03/2005, 11h20

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