Hilfe access denied ("java.io.FilePermission" " " "read")

josfe1234

Mitglied
Hallo,

ich bräuchte Hilfe für meine Uni Hausaufgabe, leider kommt dieser Logfehler:

There was 1 failure:
1) testSaveAndLoadM3U(PlayListTest)
java.security.AccessControlException: access denied ("java.io.FilePermission" " " "read")
at AudioFileFactory.getInstance(AudioFileFactory.java:12)
at PlayList.loadFromM3U(PlayList.java:95)
at PlayList.<init>(PlayList.java:24)
at PlayListTest.testSaveAndLoadM3U(PlayListTest.java:257)

FAILURES!!!
Tests run: 8, Failures: 1

die PlayList.java und die AudioFileFactory.java sind neu dazugekommen.
Alle anderen wurden letze Woche schon abgenommen vom Professor und haben die Tests auch bestanden.

Vielen dank im voraus
 

Anhänge

Zuletzt bearbeitet:
Also ich denke das der Logfehler durch die PlayList.java Datei kommt. nur ich hab leider keinen Plan mehr, was ich tun kann. ich hoffe mir kann einer so schnell wie möglich weiterhelfen.

[CODE lang="java" title="PlayList.java"]import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
import java.io.File;


@SuppressWarnings("serial")
public class PlayList extends LinkedList<AudioFile> {

List<AudioFile> lListe = new LinkedList<AudioFile>();
private int lCurPos = 0;
private boolean RngPos = false;

public PlayList() {
this.clear(); // Teilaufgabe i
lCurPos = 0;
}

public PlayList(String pathname) {
this.clear();
lCurPos = 0;
loadFromM3U (pathname); // Teilfaufgabe j
}

public int getCurrent() { // Teilaufgabe b
return lCurPos; // get current position of track
}

public void setCurrent(int lCurPos) { // Teilaufgabe b
this.lCurPos = lCurPos;
} // set current position of track in play list

public AudioFile getCurrentAudioFile() { // Teilaufgabe c
if ((lCurPos < 0) || (lCurPos >= this.size())) {
return null;
} else
return get(lCurPos);
}

public void changeCurrent() { // Teilaufgabe d
if (lCurPos != this.size() - 1) {
this.lCurPos = lCurPos + 1;
} else {
this.lCurPos = 0;

if (RngPos == true) {
setRandomOrder(true);
}
}
}

public void setRandomOrder(boolean randomOrder) { // TEilaufgabe e
RngPos = randomOrder;

if (randomOrder == true) {
Collections.shuffle(this); // nachlesen Teilaufgabe f
}// randomize tracks

}

public void saveAsM3U(String pathname) { // Teilfaufgabe g
FileWriter writer = null;

try {
writer = new FileWriter(pathname);
for (int lI = 0; lI < this.size(); lI++) {
writer.write(this.get(lI).getPathname()
+ System.getProperty("line.separator"));
}
} catch (IOException e) {
throw new RuntimeException("Unable to write to file" + pathname
+ ":" + e.getMessage());
} finally {
try {
writer.close();
} catch (Exception e) {

}
}
}

public void loadFromM3U(String pathname){ // Teilafugabe i
Scanner lScan = null;
String lLine = "";

try {
lScan = new Scanner(new File(pathname));

while(lScan.hasNext()){
lLine = lScan.nextLine();
//line -> string
if(!lLine.isEmpty() && !lLine.startsWith("#"))
this.add(AudioFileFactory.getInstance(lLine)); // Teilaufgabe i
}
} catch(IOException e){
throw new RuntimeException(e);//runtime
} finally {
try {
lScan.close();
} catch(Exception e){
//catch it
}
}
}
}
// oben teilaufgabe a[/CODE]
 
Zuletzt bearbeitet:
Du scheinst da beim PlayListTest den Konstruktor von PlayList mit einem ungültigen Path anzugeben (Oder die angegebene Datei kann nicht gelesen werden.)
 
Du scheinst da beim PlayListTest den Konstruktor von PlayList mit einem ungültigen Path anzugeben (Oder die angegebene Datei kann nicht gelesen werden.)
okay, also muss ich im PlayList Code den Konstruktor umändern?

Sorry, bin ein ziemlicher Neuling bei Java 😀


Dann hab ich theoretisch die Teilaufgabe j nicht ganz richtig erledigt glaub ich:

Teilaufgabe j:

Zu guter Letzt implementieren Sie noch einen weiteren Konstruktor der Klasse PlayList, der als Argument den Namen einer M3U-Datei erwartet. Im Rumpf des Konstruktors rufen Sie zunächst den Konstruktor ohne Parameter auf (Initialisierung) und danach die Methode zum Laden
der Play-Liste loadFromM3U(pathname).
 
Nur ins blaue geraten: vermutlich soll in loadFromM3U noch mehr als leerer String und Start mit '#' abgefangen werden, das geht bestimmt aus der Aufgabenstellung hervor
 
Nein, der Konstruktor erwartet eine Datei, die er versucht zu lesen. Also gib eine gültige Datei an, die der Code auch lesen kann.
 
Außer dem Code kann aber nichts verkehrt sein. Es ist so das ich die Audiofiles und Aufgabenblätter vom prof bekomme, diese abarbeiten und an einen automatisierten server per mail zu schicken hab und der diese abcheckt. ich hab leider keine Ahnung was ich zu ändern hab.
 

Anhänge

Lass es mich anders ausdrücken: der Code enthält keinen offensichtlichen Bug, sondern vermutlich wurden Teile der Aufgabe nicht korrekt der Aufgabe entsprechend umgesetzt.

Wir kennen aber die Aufgabe natürlich nicht, daher ist das nur ins blaue geraten.
 

Zurück
Oben