ZoRaC Skrevet 16. april 2007 Del Skrevet 16. april 2007 Bruker denne koden for å åpne lydfilene til spillet: File clipFile = new File("build/classes/Spill/lyder/" + allLyd[lydNr]); Problemet er at når jeg kjører den i nettleseren så får jeg: Exception in thread "AWT-EventQueue-3" java.security.AccessControlException: access denied (java.util.PropertyPermission user.dir 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.checkPropertyAccess(Unknown Source) at java.lang.System.getProperty(Unknown Source) at java.io.Win32FileSystem.getUserPath(Unknown Source) at java.io.Win32FileSystem.resolve(Unknown Source) at java.io.File.getAbsolutePath(Unknown Source) at Spill.Lyd.<init>(Lyd.java:60) at Spill.Vindu.sjekkLikhetPaRad(Vindu.java:388) at Spill.SpillApplet.mouseClicked(SpillApplet.java:281) at java.awt.Component.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) Antar at det er fordi jeg refererer til filbanen på feil måte, men hvordan skal jeg gjøre det? Lenke til kommentar
krigun Skrevet 17. april 2007 Del Skrevet 17. april 2007 (endret) Dette er en applet, ikke sant? Fra http://java.sun.com/sfaq/ : In general, applets loaded over the net are prevented from reading and writing files on the client file system, and from making network connections except to the originating host. Hvis du tenker deg litt om: 1: Du går til en nettside hvor appleten ligger og laster dermed ned appleten din på din lokale maskin. 2: Appleten på din lokale maskin forsøker å laste en fil som ligger lokalt på serveren 3: Hmm... Pakk alle filene dine i en jar fil (inkludert lyd og bilder). Bruk ant for eksempel (innebygget støtte i Eclipse). Da bør du laste filene dine i koden med .getResource... PS: Eventuelt, så kan du bruke HTTP til å laste ned filene dine fra samme serveren som appleten ligger på, men det er vel ikke like interessant, antar jeg... Endret 17. april 2007 av krigun Lenke til kommentar
ZoRaC Skrevet 18. april 2007 Forfatter Del Skrevet 18. april 2007 Bruker NetBeans, og den pakker den til en .jar, men hva skal jeg bytte ut denne linjen med for å få det til å virke? File clipFile = new File("build/classes/Spill/lyder/" + allLyd[lydNr]); Lenke til kommentar
Qwark Skrevet 18. april 2007 Del Skrevet 18. april 2007 Bruker NetBeans, og den pakker den til en .jar, men hva skal jeg bytte ut denne linjen med for å få det til å virke?File clipFile = new File("build/classes/Spill/lyder/" + allLyd[lydNr]); 8411129[/snapback] du kan prøve : File clipFile = new File("src/Spill/lyder/" + allLyd[lydNr]); Lenke til kommentar
krigun Skrevet 18. april 2007 Del Skrevet 18. april 2007 File clipFile = new File(MinKlasse.class.getResource("Spill/lyder/" + allLyd[lydNr]).getFile()); Tror dette skal funke.. Lenke til kommentar
ZoRaC Skrevet 18. april 2007 Forfatter Del Skrevet 18. april 2007 Qwark - Denne gir SecurityException den også. krigun - Denne gir NullPointerException: File clipFile = new File(SpillApplet.class.getResource("Spill/lyder/" + allLyd[lydNr]).getFile()); Lenke til kommentar
krigun Skrevet 18. april 2007 Del Skrevet 18. april 2007 Ok, endre filendelsen på jar filen din til en zip, og pakk den ut. Se at alt er blitt med. Strukturen bør være som et eller annet slik: minfil.jar +META-INF/ +Spill/ +klassefiler/ ...osv... Altså, se at Spill mappen er blitt med. Hvis spill mappen er med, kan du prøve å legge en forward slash foran Spill, tror det er egentlig slik det skal være: File clipFile = new File(MinKlasse.class.getResource("/Spill/lyder/" + allLyd[lydNr]).getFile()); Lenke til kommentar
ZoRaC Skrevet 18. april 2007 Forfatter Del Skrevet 18. april 2007 Takk, var faktisk bare "/" som manglet Lenke til kommentar
ZoRaC Skrevet 18. april 2007 Forfatter Del Skrevet 18. april 2007 Var visst litt kjapp til å svare, den fungerer når jeg kjører HTML-filen lokalt på min PC, men ikke når jeg legger den på nett, da får jeg fortsatt SecurityException... Noen ideer? Lenke til kommentar
krigun Skrevet 18. april 2007 Del Skrevet 18. april 2007 Var visst litt kjapp til å svare, den fungerer når jeg kjører HTML-filen lokalt på min PC, men ikke når jeg legger den på nett, da får jeg fortsatt SecurityException... Noen ideer? 8412053[/snapback] Er det flere steder som du prøver å lese/skrive til lokalt filsystem? Evt, gjøre HTTP kall til andre steder enn host serveren? Hvilken exception får du? Lenke til kommentar
ZoRaC Skrevet 18. april 2007 Forfatter Del Skrevet 18. april 2007 Nei, er ikke andre steder som jeg vet om nei... java.security.AccessControlException: access denied (java.io.FilePermission \spill\classes\Spill\lyder\bakgrunn2.wav 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.FileInputStream.<init>(Unknown Source) at com.sun.media.sound.WaveFileReader.getAudioInputStream(Unknown Source) at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source) at Spill.Lyd.<init>(Lyd.java:45) at Spill.SpillApplet.run(SpillApplet.java:126) at java.lang.Thread.run(Unknown Source) Lyd.java: File clipFile = new File(SpillApplet.class.getResource("/Spill/lyder/" + allLyd[lydNr]).getFile()); try { audioInputStream = AudioSystem.getAudioInputStream(clipFile); } catch (Exception e) { // Linje 45 e.printStackTrace(); } Lenke til kommentar
krigun Skrevet 18. april 2007 Del Skrevet 18. april 2007 Nå har jeg ikke drevet med applets på lang tid, men vet at du har lov til å lese filer som er pakket INNE i jar filen, eller ligger i en annen jar fil som er i classpath, eller enklere sagt er i classpath. Her ser det fortsatt ut som om den forsøker å lese en fil fra den lokale filsystemet, men kan desverre ikke være helt sikker. Hvordan ser innholdet av jar filen din ut? Lenke til kommentar
ZoRaC Skrevet 18. april 2007 Forfatter Del Skrevet 18. april 2007 Den ser ut slik du beskrev over... Men, er usikker på hvordan jeg "bruker" jar-filen, slik ser det ut i HTML-filen: <APPLET codebase="classes" code="Spill/SpillApplet.class" archive="./dist/Spill.jar" width=600 height=600></APPLET> Lenke til kommentar
krigun Skrevet 18. april 2007 Del Skrevet 18. april 2007 Den ser ut slik du beskrev over... Men, er usikker på hvordan jeg "bruker" jar-filen, slik ser det ut i HTML-filen: <APPLET codebase="classes" code="Spill/SpillApplet.class" archive="./dist/Spill.jar" width=600 height=600></APPLET> 8412882[/snapback] Ser vel riktig ut, men det jeg syns er merkelig er hvorfor den forsøker å hente /spill/classes/Spill.. java.security.AccessControlException: access denied (java.io.FilePermission \spill\classes\Spill\lyder\bakgrunn2.wav read) istedenfor /Spill/... Lenke til kommentar
ZoRaC Skrevet 20. april 2007 Forfatter Del Skrevet 20. april 2007 Etter enda mer Google'ing ser det ut til at File ikke kan brukes å Applets... Men, "AudioSystem.getAudioInputStream" kan også bruker URL-parameter, men hvordan kan jeg opprette clipFile som en URL? Har prøvd flere variasjoner av: clipFile = new URL("/lyder/" + allLyd[lydNr]); Men, får da "java.net.MalformedURLException: no protocol"... Lenke til kommentar
krigun Skrevet 20. april 2007 Del Skrevet 20. april 2007 Etter enda mer Google'ing ser det ut til at File ikke kan brukes å Applets...Men, "AudioSystem.getAudioInputStream" kan også bruker URL-parameter, men hvordan kan jeg opprette clipFile som en URL? DinKlasse.class.getResource("/sm...") ..returnerer en URL Lenke til kommentar
ZoRaC Skrevet 20. april 2007 Forfatter Del Skrevet 20. april 2007 Ah, selvfølgelig! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå