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

Eclipse Java Discussion :

export .jar problematique


Sujet :

Eclipse Java

Vue hybride

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

    Inscrit en
    Mars 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 63
    Par défaut export .jar problematique
    Bonjour à tous, dans le cadre d'un projet perso, j'ai une classe qui me pose probleme:
    En fait, elle marche tres bien sur Eclipse (diffusion de son) mais lorsque j'exporte le jar pour l'executer avec javaw sous windows, le son ne se lance pas.
    J'ai eu le meme probleme un certain moment avec une image qui ne s'affichait que sur eclipse, et pour corriger ca, j'ai mis cette ligne:

    java.net.URL url = gimageban = new JLabel(new ImageIcon(url));etClass().getResource("ban.png");

    Je vous met le code de la classe qui me pose probleme...

    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
     
    import java.io.*;
    import javax.sound.sampled.*;
     
     
    public class Sound 
    {
    	private AudioFormat format;
    	private byte[] samples;
     
    	public Sound(String filename){
    		try{
    			AudioInputStream stream = AudioSystem.getAudioInputStream(new File(filename));
    			format = stream.getFormat();
    			samples = getSamples(stream);
    		}
    		catch (UnsupportedAudioFileException e){
    			e.printStackTrace();
    		}
    		catch (IOException e){
    			e.printStackTrace();
    		}
    	}
     
    	public byte[] getSamples(){
    		return samples;
    	}
     
    	public byte[] getSamples(AudioInputStream stream){
    		int length = (int)(stream.getFrameLength() * format.getFrameSize());
    		byte[] samples = new byte[length];
    		DataInputStream in = new DataInputStream(stream);
    		try{
    			in.readFully(samples);
    		}
    		catch (IOException e){
    			e.printStackTrace();
    		}
    		return samples;
    	}
     
     
    	public void play(InputStream source){
    		// 100 ms buffer for real time change to the Sound stream
    		int bufferSize = format.getFrameSize() * Math.round(format.getSampleRate() / 10);
    		byte[] buffer = new byte[bufferSize];
    		SourceDataLine line;
    		try{
    			DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
    			line = (SourceDataLine)AudioSystem.getLine(info);
    			line.open(format, bufferSize);
    		}
    		catch (LineUnavailableException e){
    			e.printStackTrace();
    			return;
    		}
    		line.start();
    		try{
    			int numBytesRead = 0;
    			while (numBytesRead != -1){
    				numBytesRead = source.read(buffer, 0, buffer.length);
    				if (numBytesRead != -1)
    					line.write(buffer, 0, numBytesRead);
    			}
    		}
    		catch (IOException e){
    			e.printStackTrace();
    		}
    		line.drain();
    		line.close();
    	}
     
    	public static void main(String[] args){
    		String url = "notify.wav";
    		Sound player = new Sound(url);
    		InputStream stream = new ByteArrayInputStream(player.getSamples());
    		player.play(stream);
    		System.exit(0);
    	}
    }
    Merci pour votre aide

    Titip

  2. #2
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Le son que tu essayes d'ouvrir se trouve-t-il dans le jar?

  3. #3
    Membre éclairé

    Inscrit en
    Mars 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 63
    Par défaut
    oui il est bien dans le jar
    Je l'ai meme mis 2 fois: dans le package elite.src et dans la racine du jar

  4. #4
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Alors si il est dans ton jar tu ne peux pas le recuperer via un fileName, car il ne trouve pas ton fichier.

    IL faut lui preciser que tu es dans ton jar et que tu veux acceder a une resources qui se trouve dans le jar.
    Bon expliquer comme ca ca peux te faire peur, mais c'est pas trop compliquer.
    Vu que tu la deja fait pour l'image, il faut que tu fasses pareil.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    URL url = this.getClass.getResources(.....)
    AudioInputStream stream = AudioSystem.getAudioInputStream(new File(url.getFile));
    Si ca marche pas il faudra p'etre réfléchir un peu plus pourquoi en debuggant sans le jar, ;-).

  5. #5
    Membre éclairé

    Inscrit en
    Mars 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 63
    Par défaut
    oui tu as tout a fait raison ca marche comme ca , j'avais bidouillé comme je pouvais avec l'image, mais sans en connaitre la raison, et maintenant que tu m'as explique ca me parait plus logique.

    Merci maxf1 pour ton aide, je remet le code de la classe corrigée pour les archives

    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
     
    import java.io.*;
     
    import javax.sound.sampled.*;
     
     
    public class Sound
    {
    	private AudioFormat format;
    	private byte[] samples;
    	static Sound player;
     
     
     
    	public Sound(){
    		try{
    			java.net.URL url0 = getClass().getResource("notify.wav");
    			AudioInputStream stream = AudioSystem.getAudioInputStream(url0);
    			format = stream.getFormat();
    			samples = getSamples(stream);
    		}
    		catch (UnsupportedAudioFileException e){
    			e.printStackTrace();
    		}
    		catch (IOException e){
    			e.printStackTrace();
    		}
    	}
     
    	public byte[] getSamples(){
    		return samples;
    	}
     
    	public byte[] getSamples(AudioInputStream stream){
    		int length = (int)(stream.getFrameLength() * format.getFrameSize());
    		byte[] samples = new byte[length];
    		DataInputStream in = new DataInputStream(stream);
    		try{
    			in.readFully(samples);
    		}
    		catch (IOException e){
    			e.printStackTrace();
    		}
    		return samples;
    	}
     
     
    	public void play(InputStream source){
    //		100 ms buffer for real time change to the Sound stream
    		int bufferSize = format.getFrameSize() * Math.round(format.getSampleRate() / 10);
    		byte[] buffer = new byte[bufferSize];
    		SourceDataLine line;
    		try{
    			DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
    			line = (SourceDataLine)AudioSystem.getLine(info);
    			line.open(format, bufferSize);
    		}
    		catch (LineUnavailableException e){
    			e.printStackTrace();
    			return;
    		}
    		line.start();
    		try{
    			int numBytesRead = 0;
    			while (numBytesRead != -1){
    				numBytesRead = source.read(buffer, 0, buffer.length);
    				if (numBytesRead != -1)
    					line.write(buffer, 0, numBytesRead);
    			}
    		}
    		catch (IOException e){
    			e.printStackTrace();
    		}
    		line.drain();
    		line.close();
    	}
     
     
     
    	public static void main(String[] args){
    		//String url = "notify.wav";
     
    		Sound player = new Sound();
    		InputStream stream = new ByteArrayInputStream(player.getSamples());
    		player.play(stream);
    		System.exit(0);
    	}
    }

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

Discussions similaires

  1. [JAR] Export jar exécutable
    Par meli0207 dans le forum Eclipse Java
    Réponses: 8
    Dernier message: 15/06/2010, 16h19
  2. [export jar] inclure une lib externe
    Par EpOnYmE187 dans le forum Eclipse Java
    Réponses: 8
    Dernier message: 14/03/2008, 17h23
  3. [Export JAR] Librairie externe
    Par Imladir dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 05/02/2006, 10h48
  4. Réponses: 6
    Dernier message: 17/04/2005, 11h58
  5. Problème d'exportation jar : où est mon répertoire bin ?
    Par fredcontin dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 25/05/2004, 17h57

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