Bonjour,
Je développe actuellement une webapplication Struts, dans laquelle je voudrais inclure la lecture de "petits sons au format .wav", par exemple : un message de bienvenue lorsqu'un user s'authentifie.
J'ai trouvé une classe "toute faite" qui fonctionne tres bien (je l'ai testée dans une application java SE).
Mon problème provient du fait qu'une fois que j'ai voulu implémenter cette fonction dans ma webapplication, il me génère une erreur java.io.filenotfound ... pourtant mon échantillon .wav est placé exactement au même endroit que là ou je l'avais placé pour mon test dans mon appli java SE.
Voici la classe sound que j'utilise :

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
 
package soundpack;
import java.io.*;
import javax.sound.sampled.*;
public class sound {
 
 private AudioFormat format;
 private byte[] samples;
 
 public sound(String filename){
  try{System.out.println("AudioInputStream stream = AudioSystem.getAudioInputStream(new File(filename)); OK?");
                                      AudioInputStream stream = AudioSystem.getAudioInputStream(new File(filename));
                        System.out.println("AudioInputStream stream = AudioSystem.getAudioInputStream(new File(filename)); OK !");
   format = stream.getFormat();
   samples = getSamples(stream);
 
  }
  catch (UnsupportedAudioFileException e){
   e.printStackTrace();
 }
 catch (IOException e){
   e.printStackTrace();
                        System.out.println("prob!");
  }
 }
 
 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();
                        System.out.println("prob2!");
  }
  line.drain();
  line.close();
 }
 
 public static void jouerDRUCKE(){
            System.out.println("Va-t-on trouver le fichier?");
  sound player = new sound("DRUCKE.wav");
  InputStream stream = new ByteArrayInputStream(player.getSamples());
  player.play(stream);
                System.out.println("bonjour, je joue de la musique");
  //System.exit(0);
 }

Mon erreur se produit à hauteur de la ligne en gras...donc selon moi il ne trouve aps le fichier...
Y aurait-il une spécificité a Struts quant à l'endroit ou le placer?
Autre chose?

MErci de votre aide..