Export do pliku jar. Problem z ścieżką

0

Witam,

Ostatnio zacząłem pisać program typu SoundBoard.
Program działa bez problemu, bo kliknięciu na przycisku w okienku dźwięk się odtwarza.
Niestety działa to tylko, gdy program jest uruchamiany przez eclipse.
Gdy program wyeksportuje do pliku wykonywalnego jar to pliki dźwiękowe umieszczają się w tym jar, ale program który uruchamiam z jar już nie widzi tych plików.
Klasa Sound

package testy;

import java.io.*;
import sun.audio.*;

public class Sound {
    
    public Sound() {
    }

    public static AudioStream S1, S2, S3, S4;

    public static void pliki() {
        try {
            InputStream ding = new FileInputStream("sounds/testy/ding.wav"); //ścieżka do pliku dźwiękowego
            //InputStream blad = new FileInputStream("zasoby/zasoby/wykrzyknik.wav");
        
            S1 = new AudioStream(ding);
            //S2 = new AudioStream(blad);
        } catch (FileNotFoundException e) {
            System.out.println("not found file");
        } catch (IOException error) {
            System.out.println("error");

        }

    }
    public void music(int i) { //funkcja do wybierania dźwięku. Narazie jest tylko jeden dźwięk
        pliki();
        if (i == 1)
            AudioPlayer.player.start(S1); //odtwarzam wybrany dźwięk
        if (i == 2)
            AudioPlayer.player.start(S2);
        if (i==3)
            AudioPlayer.player.start(S3);
        if(i==4)
            AudioPlayer.player.start(S4);

    }
} 

Klasa z przyciskami. Testowo dodałem tylko jednego słuchacza do przycisku

 package testy;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Panel1 extends JPanel implements ActionListener {
    
    public static Sound xp = new Sound();
    public static JButton Q = new JButton("Q");
    public static JButton W = new JButton("W");
    public static JButton E = new JButton("E");
    public static JButton R = new JButton("R");
    public static JButton T = new JButton("T");
    public static JButton Y = new JButton("Y");
    public static JButton U = new JButton("U");
    public static JButton I = new JButton("I");
    public static JButton O = new JButton("O");
    public static JButton P = new JButton("P");
    public static GridLayout uklad = new GridLayout(1, 10);
    public Panel1() {
        add(Q);
        Q.addActionListener(this);
        add(W);
        add(E);
        add(R);
        add(T);
        add(Y);
        add(U);
        add(I);
        add(O);
        add(P);
        setLayout(uklad);
        
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==Q) {
            xp.music(1);
        }
        else {}
    }

}

Klasa wyświetlająca okno

 package testy;

import javax.swing.JFrame;

public class Frame extends JFrame {

      public static Panel1 panelek = new Panel1();
      public Frame() {
          setSize(600, 100);
          setTitle("Test");
          setDefaultCloseOperation(EXIT_ON_CLOSE);
          add(panelek);
      }
}

Klasa Main

package testy;

public class Main {

    public static void main(String[] args) throws Exception {
        System.out.println("START");
        Frame okienko = new Frame();
        okienko.setVisible(true);
        System.out.println("STOP");
    }

}
 

A tutaj drzewo plików
title

0

Hej.

Albo nie umieszczaj plików w jarze, albo ładuj za pomocą metody getResourceAsStream().

0

Kombinuje i niestety nic z tego.

0

W sensie co nie działa?

0

Odtwarzanie pliku z jar. Nie wiem jak zabrać się za to getResourceAsStream().

1

Normalnie: getClass().getResourceAsStream("/sciezka/do/pliku/taka/jak/w_jarze.wav")

1 użytkowników online, w tym zalogowanych: 0, gości: 1