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

AWT/Swing Java Discussion :

[Java] Programme qui run en local, mais pas sur une autre machine


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 494
    Billets dans le blog
    8
    Par défaut [Java] Programme qui run en local, mais pas sur une autre machine
    Bonsoir,

    J'essaie de débusquer un petit bug depuis le début de la soirée sans succès.

    Suite à la réponse que j'ai eu sur ce sujet: http://www.developpez.net/forums/d15...-se-redessine/

    J'ai voulu tester autre chose (dans le même genre), mais sur des machines différentes. Malheureusement, mise à part la machine sur laquelle le programme a été compilé (la mienne donc) et introduit dans une archive jar, le JPanel refuse de dessiner les images que je souhaite voir figurer dans ma fenêtre.

    Le JPanel:

    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
    package fr.songbird.launch;
     
    import java.awt.Color;
    import java.awt.Graphics;
    import javax.swing.JPanel;
     
    import fr.songbird.gearsofgame.Enderman;
    import fr.songbird.gearsofgame.SlimeBall;
    import fr.songbird.listener.Moteur;
     
    public class Arena extends JPanel{
    	private static final long serialVersionUID = 44173929977672117L;
    	private Enderman enderman; 
    	private SlimeBall slime;
    	private Moteur moteur;
     
     
     
    	public Arena(){
    		setBackground(Color.BLUE);
    		slime = new SlimeBall();
    		enderman = new Enderman();
    		moteur = new Moteur(this, slime);
    		addMouseMotionListener(moteur);
    	}
     
     
    	@Override
    	protected void paintComponent(Graphics g){
    		super.paintComponent(g);
    		slime.affichage(g);
    		enderman.affichage(g);
    	}
     
    	public void positionnerSlime(int x, int y){
    		slime.setCoordX(x);
    		slime.setCoordY(y);
    		repaint();
    	}
    }
    La fenêtre dans laquelle le JPanel est intégré:

    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
    package fr.songbird.launch;
    import java.awt.Dimension;
     
    import javax.swing.JFrame;
     
    import fr.songbird.gearsofgame.Constants;
    public class GUItce extends JFrame implements Constants{
     
    	private static final long serialVersionUID = -5031966449769818711L;
    	private Arena panel;
    	public GUItce(){
    		panel = new Arena();
    		getContentPane().add(panel);
    		panel.setPreferredSize(new Dimension(COLONNES*CASES,
    				LIGNES*CASES));
    		pack();
    		setResizable(false);
    		setLocationRelativeTo(null);
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setVisible(true);
    	}
     
     
    	public static void main(String[] args){
    		new GUItce();
    	}
    }
    Vous pouvez essayer par vous-même, mais vous tomberez certainement sur un panel bleu et vide: https://www.dropbox.com/s/dq03mes3vh...erman.jar?dl=0

    Je vous remercie d'avance pour vos réponses,

    Cordialement,

    Songbird.

  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
    Avec le code ça m'aurait évité de devoir décompiler...


    Tu as ceci dans SlimeBall


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        private ImageIcon Simcon = new ImageIcon("ressources/mobslime.png");
    Mais cette ressource n'est pas présente dans ton jar. Donc tu t'amuse à déplacer une image vide. Malheureusement, new ImageIcon est asynchrone et n'envoie donc pas d'exception si la ressource n'existe pas.

  3. #3
    Membre Expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 494
    Billets dans le blog
    8
    Par défaut
    Bonsoir,


    Mais cette ressource n'est pas présente dans ton jar. Donc tu t'amuse à déplacer une image vide. Malheureusement, new ImageIcon est asynchrone et n'envoie donc pas d'exception si la ressource n'existe pas.
    J'ai recréé un jar (avec les sources cette fois-ci ), et me suis assuré que les ressources soient présentes dans l'archive (avec une instance de File dans les constructeurs respectifs des deux classes en question).

    J'ai testé sous une machine Windows, et la méthode exists() me renvoie false...

    Voici le lien de l'archive:
    https://www.dropbox.com/s/dq03mes3vh...erman.jar?dl=0

  4. #4
    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
    on ne peux pas utilise File sur des ressources, File c'est pour des fichiers. Si tu veux savoir si une resource existe, fait un getResouceAsStream sur le classloader et teste si la valeur est enulle.

  5. #5
    Membre Expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 494
    Billets dans le blog
    8
    Par défaut
    on ne peux pas utilise File sur des ressources, File c'est pour des fichiers. Si tu veux savoir si une resource existe, fait un getResouceAsStream sur le classloader et teste si la valeur est enulle.
    D'accord, après avoir fait ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(SlimeBall.class.getClassLoader().getResourceAsStream("ressources/mobslime.png"));
    Ca me renvoie "null" alors que la ressource est bien présente, qu'est-ce que je suis censé en déduire ?

  6. #6
    Membre Expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 494
    Billets dans le blog
    8
    Par défaut
    Rebonsoir,

    Bon j'ai résolu le souci en faisant un répertoire dans le home utilisateur, finalement.

    (J'avais tout simplement omis que les .jar ne sont pas considérés comme un répertoire courant de projet, donc le chemin relatif se "rattachait" au répertoire parent qui était tout sauf celui que je voulais )

    Merci pour ton aide malgré tout.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/05/2014, 08h49
  2. [RegEx] Regex qui fonctionne en local mais pas sur le serveur
    Par lecroquant dans le forum Langage
    Réponses: 3
    Dernier message: 10/01/2012, 16h01
  3. Réponses: 4
    Dernier message: 22/02/2009, 16h24
  4. script qui marche en locale mais pas sur le web
    Par koKoTis dans le forum Langage
    Réponses: 7
    Dernier message: 08/09/2008, 16h07
  5. [2.0] connexion qui fonctionne chez moi mais pas sur un autre pc
    Par Lorenzeb dans le forum Accès aux données
    Réponses: 1
    Dernier message: 13/09/2006, 17h47

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