1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Bitte um Hilfe bei Fehlersuche ;-)

  • Unic0der
  • 3. Juli 2004 um 17:22
  • Unerledigt
  • Unic0der
    21
    Unic0der
    Mitglied
    Reaktionen
    4
    Punkte
    4.699
    Beiträge
    835
    • 3. Juli 2004 um 17:22
    • #1

    Der Compiler gibt mir für Zeile 25 folgenden Fehler aus:

    Code
    pussy/LoadDictionarys.java [25:1] cannot resolve symbol
    symbol  : method listFiles (pussy.FilenameFilter)
    location: class java.io.File
    		File[] contents = myDir.listFiles(select);
    							   ^
    1 error
    Errors compiling LoadDictionarys.



    Das dumme ist nur: Ich komme einfach nicht drauf wo genau der Fehler liegt. :winking_face: Mir erscheint in meinem Code so weit alles logisch.

    Vielleicht könnte mal einer von euch einen kleinen Blick auf den Code werfen:

    Java
    package pussy;
    import java.io.*;
    import java.util.Date;
    
    
    public class LoadDictionarys {
    	/** Creates a new instance of LoadDictionarys */
    	public LoadDictionarys() {
    		if (pussy.Pussy.cout == true) System.out.println("LOADDICTIONARYS started");
    		File myDir = new File("C:/Dokumente und Einstellungen/Eigene Dateien/Devel/pussy/pussy/");
    
    		if (pussy.Pussy.cout == true) System.out.println(myDir.getAbsolutePath() + (myDir.isDirectory()?" is ":" is not ") + "a directory");
    		if (pussy.Pussy.cout == true) System.out.println("The parent of " + myDir.getName() + " is " + myDir.getParent());
    
    		FilenameFilter select = new FileListFilter("c", "java");
    		File[] contents = myDir.listFiles(select);
    
    		//File[] contents = myDir.listFiles();
    		if (contents!=null){
    			if (pussy.Pussy.cout == true) System.out.println("The " + contents.length + " items in the directory " + myDir.getName() + " are:");
    			for(int i = 0; i < contents.length; i++)
    				if (pussy.Pussy.cout == true) System.out.println(contents[i] + " is a " + (contents[i].isDirectory() ? "directory":"file") + " last modified " + new Date(contents[i].lastModified()));
    	   }
    		else {
    			if (pussy.Pussy.cout == true) System.out.println(myDir.getName() + " is not a directory");
    		}
    		if (pussy.Pussy.cout == true) System.out.println("LOADDICTIONARYS terminated correctly");
       }
    }
    
    interface FilenameFilter {
    		public abstract boolean accept(File directory, String filename);
    	}
    
    interface FileFilter {
    		public abstract boolean accept(File pathname);
    	}
    class FileListFilter implements FilenameFilter {
    	private String name;
    	private String extension;
    
    	// Constructor
    	public FileListFilter(String name, String extension){
    		this.name = name;
    		this.extension = extension;
    	}
    
    	public boolean accept(File directory, String filename) {
    		boolean fileOK = true;
    		if(name != null)
    			fileOK &= filename.startsWith("." + extension);
    		if(extension != null)
    			fileOK &= filename.endsWith("." + extension);
    		return fileOK;
    	}  
    }
    Alles anzeigen

    http://www.informatik-forum.at/showthread.php?t=66532

    Einmal editiert, zuletzt von Unic0der (29. März 2010 um 13:55)

  • JohnFoo
    20
    JohnFoo
    Mitglied
    Reaktionen
    61
    Punkte
    4.231
    Beiträge
    761
    • 3. Juli 2004 um 20:03
    • #2
    Zitat von MacOS X
    Code
    File myDir = new File("C:/Dokumente und Einstellungen/Eigene Dateien/Devel/pussy/pussy/");


    Hmmm .. macht's nen Unterschied, wenn man einen Backslash statt eines Slash benutzt?

    Btw, wie kommt man auf einen Namen wie "Pussy" für eine Software ;)?

    Einmal editiert, zuletzt von JohnFoo (29. März 2010 um 14:52)

  • Unic0der
    21
    Unic0der
    Mitglied
    Reaktionen
    4
    Punkte
    4.699
    Beiträge
    835
    • 3. Juli 2004 um 21:13
    • #3
    Zitat von JohnFoo

    Hmmm .. macht's nen Unterschied, wenn man einen Backslash statt eines Slash benutzt?

    Ja :grinning_squinting_face: So wie ich es habe passt es aber ...

    Zitat


    Btw, wie kommt man auf einen Namen wie "Pussy" für eine Software ;)?


    Das ist gar nicht so leicht zu erklären: :winking_face:
    Apple nimmt ja Raubkatzen als Codenamen (Jaguar, Panther, Tiger, ...). Da hab ich mir gedacht - hey, dann nehm ich auch mal eine Katze als Codename für mein nächstes Projekt. ;P

    Naja, nichts desto trotz - das Problem ist leider noch immer nicht gelöst. :shinner:

    http://www.informatik-forum.at/showthread.php?t=66532

    Einmal editiert, zuletzt von Unic0der (29. März 2010 um 13:56)

  • a9bejo
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    Punkte
    4.697
    Beiträge
    913
    • 3. Juli 2004 um 22:04
    • #4

    die fehlermeldung beschreibt das problem eh recht genau:

    du versucht der methode listFiles(java.io.FilenameFilter) als Parameter einen pussy.FilenameFilter zu übergeben, und das ist nicht erlaubt.

    wenn du eine klasse nicht mit ihrem vollständigen pfad angibst, dann wird zunächst das eigene package durchsucht und _erst dann_ die importierten packages.

    wenn du in deinem code entweder die deklaration von FileListFilter so umänderst:

    Code
    class FileListFilter implements java.io.FilenameFilter

    oder einfach das interface pussy.FilenameFilter löschst, sollte der fehler nicht mehr auftreten.

    lg, Benjamin Ferrari, bookworm.at

  • Unic0der
    21
    Unic0der
    Mitglied
    Reaktionen
    4
    Punkte
    4.699
    Beiträge
    835
    • 3. Juli 2004 um 22:29
    • #5
    Zitat von a9bejo

    die fehlermeldung beschreibt das problem eh recht genau:


    Danke für die Hilfe, aber gelöst ist das Problem noch nicht.

    Wenn ich das eine Interface lösche ändert sich absolut gar nichts. Der Fehler bleibt genau so bestehen.

    Wenn ich deinen anderen Vorschlag durchführe bleibt auch der alte Fehler bestehen + es kommt ein neuer als Bonus dazu :winking_face: :

    Code
    pussy/LoadDictionarys.java [24:1] incompatible types
    found   : pussy.FileListFilter
    required: pussy.FilenameFilter
    		FilenameFilter select = new FileListFilter("c", "java");
    								^
    pussy/LoadDictionarys.java [25:1] cannot resolve symbol
    symbol  : method listFiles (pussy.FilenameFilter)
    location: class java.io.File
    		File[] contents = myDir.listFiles(select);
    							   ^
    2 errors
    Errors compiling LoadDictionarys.
    Alles anzeigen



    Sonst noch irgendwelche Vorschläge?

    http://www.informatik-forum.at/showthread.php?t=66532

  • a9bejo
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    Punkte
    4.697
    Beiträge
    913
    • 4. Juli 2004 um 12:37
    • #6

    Also irgendwo verstehen wir uns falsch, denn bei mir lässt sich der Code mit meinen Vorschlägen compilieren und ausführen.

    also so sieht der code aus, den ich gerade getestet habe:

    file: LoadDictionarys.java

    Java
    package pussy;
    import java.io.File;
    import java.io.FilenameFilter;
    
    
    public class LoadDictionarys {
    	/** Creates a new instance of LoadDictionarys */
    	public LoadDictionarys() {
    
    		File myDir = new File("E:/documents/labs/workspace/test/src/pussy");
    
    		FilenameFilter select = new FileListFilter("c", "java");
    		File[] contents = myDir.listFiles(select);
    
    		if(contents.length > 0){
    		    for (int i = 0; i < contents.length; i++) {
                    System.out.println(" * "+contents[i]);
                }
    		}
    
       }
    }
    Alles anzeigen


    file: FileListFilter

    Java
    /*
     * Created on 04.07.2004
     *
     */
    package pussy;
    import java.io.File;
    
    
    class FileListFilter implements java.io.FilenameFilter {
    	private String name;
    	private String extension;
    
    	// Constructor
    	public FileListFilter(String name, String extension){
    		this.name = name;
    		this.extension = extension;
    	}
    
            /*ich habe hier noch ein wenig was geändern, weil der filter sonst alles in meinem test-directory wegfiltert.*/
    	public boolean accept(File directory, String filename) {
    		boolean fileOK = false;
    		if(name != null)
    			fileOK = filename.startsWith("." + extension);
    		if(extension != null)
    		    fileOK |= filename.endsWith("." + extension);
    		return fileOK;
    	}  
    }
    Alles anzeigen

    file: test.java

    Code
    package pussy;
    public class Test {
        public static void main(String[] args) {
            new LoadDictionarys();
        }
    }

    lg, Benjamin Ferrari, bookworm.at

  • Unic0der
    21
    Unic0der
    Mitglied
    Reaktionen
    4
    Punkte
    4.699
    Beiträge
    835
    • 4. Juli 2004 um 14:26
    • #7

    Hmmm ... echt komisch. Ich habs jetzt exakt mit deinem Code probiert und es geht wieder nicht.

    Vielleicht hat ja meine Javainstallation was. Ich werd dem mal nachgehen.

    Thx auf jeden Fall :thumb: .

    mac

    http://www.informatik-forum.at/showthread.php?t=66532

  • wolk
    11
    wolk
    Mitglied
    Punkte
    1.290
    Beiträge
    207
    • 5. Juli 2004 um 05:58
    • #8

    unbedingt die version von java vergleichen
    da gibts mittlerweile wirklich dinge die sich mit der neuen version nich kompilieren lassen (1.4.2) von der 1.5er nicht zu reden

    bsp: in der Klasse String gabs vor der version 1.4.2 eine funktion um einen String im String zu suchen, wenn man die funktion jetzt benutzt "motzt" der compiler, weil sie den übergabeparameter von String auf Expression geändert haben :loudly_crying_face:

  • a9bejo
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    Punkte
    4.697
    Beiträge
    913
    • 5. Juli 2004 um 07:33
    • #9
    Zitat von wolk

    unbedingt die version von java vergleichen
    da gibts mittlerweile wirklich dinge die sich mit der neuen version nich kompilieren lassen (1.4.2) von der 1.5er nicht zu reden

    bsp: in der Klasse String gabs vor der version 1.4.2 eine funktion um einen String im String zu suchen, wenn man die funktion jetzt benutzt "motzt" der compiler, weil sie den übergabeparameter von String auf Expression geändert haben :loudly_crying_face:


    Welche funktion ist das denn?

    Ich finde keine methode weder in 1.3 noch in 1.4.2, auf die deine beschreibung zutrifft.

    lg, Benjamin Ferrari, bookworm.at

  • wolk
    11
    wolk
    Mitglied
    Punkte
    1.290
    Beiträge
    207
    • 5. Juli 2004 um 07:40
    • #10

    ich glaub das war replaceAll(regex,string)

    bei eprog (1.4.1) war das noch (string,string) und jetzt ist aus dem einen string eine regular expressiongeworden -> funktioniert altes prog. nicht mehr mit 1.4.2

  • a9bejo
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    Punkte
    4.697
    Beiträge
    913
    • 5. Juli 2004 um 08:23
    • #11
    Zitat von wolk

    ich glaub das war replaceAll(regex,string)

    bei eprog (1.4.1) war das noch (string,string) und jetzt ist aus dem einen string eine regular expressiongeworden -> funktioniert altes prog. nicht mehr mit 1.4.2

    Also es war jetzt gar nicht so einfach, eine 1.4.1 doku aufzutreiben. :winking_face:

    Hab jetzt aber doch eine gefunden und da steht:

    Code
    String 	replaceAll(String regex, String replacement)
              Replaces each substring of this string that matches the given regular expression with the given replacement.

    und in 1.4.2:

    Code
    String replaceAll(String regex, String replacement)
              Replaces each substring of this string that matches the given regular expression with the given replacement.

    vielleicht arbeitet man in eprog mit einer beta version? :)

    lg, Benjamin Ferrari, bookworm.at

  • wolk
    11
    wolk
    Mitglied
    Punkte
    1.290
    Beiträge
    207
    • 5. Juli 2004 um 08:36
    • #12

    es ist merkwürdig, bei mir funktioniert x.replaceAll("s",".") ohne probleme, aber ich hab vor 2 wochen auf einem PC selbiges zu kompilieren versucht, und da gabs die fehlermeldung dass der parameter keine regular expression ist ?????

  • Sysmaniac
    6
    Sysmaniac
    Mitglied
    Reaktionen
    1
    Punkte
    301
    Beiträge
    53
    • 5. Juli 2004 um 15:56
    • #13
    Zitat von MacOS X

    Hmmm ... echt komisch. Ich habs jetzt exakt mit deinem Code probiert und es geht wieder nicht.

    Vielleicht hat ja meine Javainstallation was. Ich werd dem mal nachgehen.

    Thx auf jeden Fall :thumb: .

    mac

    Versuche mal eine Installation in ein Directory ohne Leerzeichen. Ich habe in deinem Code irgendeinen Pfad mit "Dokumente und Einstellungen" gesehen...

    lg
    Sys

    Any sufficiently advanced technology is indistinguishable from magic.
    Arthur C. Clarke

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung