aplet i muzyka

0

Mam kłopot, muszę zrobić stronę na konkurs, nie mogę używać żadnych serwerów, więc aplet musi mieć dostęp do lokalnych zasobów (płyty CD ze stroną). Muszę jeszcze tylko osadzić na stronie jakieś tło dźwiękowe. Niestety Firefox w którym strona ma działać nie ma zainstalowanego pluginu odtwarzającego głos, więc jedyny sposób to dźwięk przez javę. Mam taki prosty kod:

public class powstWlkpMusic extends java.applet.Applet {

    File path;
    AudioClip ac;
 
    public void init() {
        
            path = new File("music.wav");
            try {
                ac = this.getAudioClip(path.toURL());
                ac.loop();
            } catch (Exception ex) {
            }   

    }

    public void destroy() {
        try{
            ac.stop();
        }catch (Exception ex){
            
        }
    }
}

Podczas testów w NetBeans wszystko działa, ale przeglądarka zwraca

java.security.AccessControlException: access denied (java.io.FilePermission . read)
	at java.security.AccessControlContext.checkPermission(Unknown Source)
	at java.security.AccessController.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkRead(Unknown Source)
	at java.io.File.list(Unknown Source)
	at powstWlkpMusic.init(powstWlkpMusic.java:31)
	at sun.applet.AppletPanel.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

Proszę o pomoc, pracę muszę dodać do przyszłego wtorku.

0

No normalne :) Applety nie mają dostępu do żadnych zasobów lokalnych. Moja propozycja to dodaj plik music.wav do jara za pomocą getResorce() z ClassLoadera pobrać plik z jara.

0

dzięki, zrobiłem to, tylko nie mogę znaleźdź sposobu na dodanie tego pliku do jara, jak mogę to zrobić w NetBeansie?

0

Najszybciej to olać NB i za pomocą zwykłego winzipa dodać. Plik jar to w ogólności archiwum zip

0

ok, znalazłem sposób, dodałem plik do katalogu z kodami źródłowymi, to dorzucił, a jeśli chodzi o archiwum to podczas dodawania pojawiło mi się "Compres operation is not alowed for that folder".
Ciągle jakieś kłopoty, teraz mi nie chce pliku dodać, wiesz może jak umieścić aplet, który jest w jarze zapakowany? ;-D

Używam takiego kodu:

<APPLET codebase="music/powstWlkpMusic.jar" code="powstWlkpMusic.class" width=10 height=10></APPLET>

plik jar jest w katalogu "music" i nazywa się "powstWlkpMusic.jar", a plik class "powstWlkpMusic.class"

0

http://java.sun.com/docs/books/tutorial/deployment/applet/deployindex.html

Uruchamianie appletów. Polecam jako lekturę na wieczór :)

Tag <applet / > to zuo .Lepiej używać kombinacji Object i Embed

0

Dzięki, znalazłem sposób i niestety wróciłem do punktu wyjścia:

public class powstWlkpMusic extends java.applet.Applet {

    AudioClip ac;
    
    public void init() {
      
            ClassLoader cl = ClassLoader.getSystemClassLoader();

            try {
                ac = this.getAudioClip(cl.getResource("music.wav"));
                ac.loop();
            } catch (Exception ex) {
                ex.printStackTrace();
            }
    }

    public void destroy() {
        try{
            ac.stop();
        }catch (Exception ex){
            
        }
    }
}

i bład:

java.security.AccessControlException: access denied (java.io.FilePermission . read)
	at java.security.AccessControlContext.checkPermission(Unknown Source)
	at java.security.AccessController.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkRead(Unknown Source)
	at java.io.File.list(Unknown Source)
	at powstWlkpMusic.init(powstWlkpMusic.java:31)
	at sun.applet.AppletPanel.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

Chyba mam pecha.

0
ClassLoader cl = powstWlkpMusic.class.getClassLoader();

??

0

;-( [???] ;-( :-[ Nadal to samo ;-(

0

mam dosyć, teraz znowu nie moge załadować, idę spać.

0

Ja pobieram muzykę tak:
W pliku html jest cos takiego

<applet code="Looper.class" archive="Utwory.jar" height="40" width="300"></applet>

a w kodzie apletu

AudioClip muzyczka=getAudioClip(getCodeBase(),"sound.wav");
....
muzyczka.play();

nie wiem jakie typy plików muzycznych da się tak odtworzyć
pozdrawiam

0

dzięki, wreszcie inna odpowiedź javy, tym razem java.lang.OutOfMemoryError: Java heap space.
Muszę jeszcze tylko skrócić utwór i powinno ruszyć, mam nadzeję :P

0

działa!!!!!!!!!!!!!!!!!!!!!
Jesteś wielki, szkoda tylko, że cały utwór się nie mieści w pamięci.

0
hubert_nnn napisał(a)

ok, znalazłem sposób, dodałem plik do katalogu z kodami źródłowymi, to dorzucił, a Używam takiego kodu:

<APPLET codebase="music/powstWlkpMusic.jar" code="powstWlkpMusic.class" width=10 height=10></APPLET>



Uzywasz zlego kodu po prostu. Kod powinien byc taki:

<applet archive="NazwaPliku.jar" code="NazwaGlownejKlasy.class"></applet>

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