Zasoby w pliku .jar - .wav i .txt

0

Witam, jestem początkujący. Napisałem sobie programik który coś tam sygnalizuje dźwiękami (.wav) i zapisuje różne rzeczy do .txt. Mam natomiast problem z plikiem jar, w którym nie można odnaleźć ścieżek do plików...

W IDE program śmiga elegancko, odtwarza dźwięki, można odczytać txt itd. Szukałem trochę w necie, znalazłem jakieś rozwiązania typu getClass().getResourceAsStream("/resources/costam.wav"), ale to nie chce działać, albo nie umiem z tego skorzystać...
Czytałem także, że plik .jar inaczej odczytuje ścieżkę i dlatego ta zadeklarowana w kodzie wyrzuca błąd.

W każdym razie nic z tą wiedzą nie potrafię zrobić, dlatego potrzebuję pomocy, za którą będę bardzo wdzięczny.

0

Było już x razy na forum:

InputStream in = jakasKlasa.class.getResourceAsStream(/jakiskataalog/costam.wav);

gdzie jakaś klasa to Twoja klasa główna.

0

Dzięki, ale..

lipkerson napisał(a)

[...]
InputStream in = jakasKlasa.class.getResourceAsStream(/jakiskataalog/costam.wav);
[...]

ta linijka w moim przypadku zwraca nulla...

Może to spowodowane wyjęciem linijki z kontekstu. Chodziło o coś takiego:

private void kopsnijNute(String nazwaPliczku)
{
  try
  {
    ClassLoader CLDR = this.getClass().getClassLoader();
    InputStream inputStream = CLDR.getResourceAsStream("/sounds/" + nazwaPliczku);
    AudioStream audioStream = new AudioStream(inputStream);
    AudioPlayer.player.start(audioStream);
  }
  catch (Exception e)
  {
    // bebechy
  }
}
0

ClassLoader CLDR = this.getClass().getClassLoader();

wtf?

Pisałem Ci że to ma być Twoja klasa główna...masz w klasie głównej pobieranie plików?

Zrób sobie po prostu klasę jakaś np. FilesInJarHandling i tam zawrzyj metody pobierajaće z zasoby (pliki) z klasy głównej.

0

Przykład:

Masz klasę główną twojego projektu ... MainKlasa.java i klasę FilesHandling.java i teraz

w FilesHandling masz w konstruktorze :

InputStream in = MainKlasa.class.getResourceAsStream(/jakiskataalog/costam.wav);  

a w klasie MainKlasa tworzysz :

FilesHandling FH = new FilesHandling();

finito ... i na pewno nie będziesz miał nulla

0
lipkerson napisał(a)

[...]

FilesHandling FH = new FilesHandling();

finito ... i na pewno nie będziesz miał nulla

i wszystko jasne - dzięki [browar]
choć to co napisałem wyżej też śmiga (znalazłem gdzieś w necie)

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