Vorhandenes das nicht existiert??

M

MiMa

Top Contributor
Hört sich widersprüchlich an, aber für mich sieht es so aus?!?
Nach langen suchen und probieren weis ich keinen Rat mehr und hoffe das es eine Lösung gibt das nicht vorhandene zu identifizieren.

Es ist mal wieder eine Audiodatei deren Metadaten ich einlese.
Ich habe alle Möglichkeiten abgefangen die existieren könnten (mit Werte, ohne Werte, mit teilweise Werte, usw.)

Das einlesen des Metatags Titelnummer kann einfach eine Zahl sein einstellig bis mehrstellig. (1,2,3,.....)
Es kann auch mit einem Trennzeichen (1/10)

MetadatenTitel.JPG

Im Code habe ich zum finden der Fehlerquelle folgenden Code hinzugefügt
Java:
if (titelnummer != null) {
            LOG.info("Die Titelnummer enthält einen Wert : " + titelnummer);
            LOG.info("Die länge der Titelnummer ist      : " + titelnummer.length());
    ...
Ausgegeben wird
Code:
2021-01-12 11:52:02 [main] INFO  - Die Titelnummer enthält einen Wert :
2021-01-12 11:52:02 [main] INFO  - Die länge der Titelnummer ist      : 0

Ein Blick in die Metadaten mit Directory Opus und MP3Tag kann ich erkennen das definitiv nichts sichtbares enthalten ist.
Ich habe auch schon geprüft ob ein Leerzeichen die Ursache sein kann? Ist es aber nicht!
Aber dennoch muss etwas da sein weil der Code != null erkennt und wenn ich von Hand die Metadatenfelder in Directoy Opus oder MP3 klicke und diese von Hand leer mache dann funktioniert mein Code wieder und das Ergebnis sind dann Standardwerte die ich definiert habe.

Das Problem wurde sichtbar als ich die Titelnummer in ein Integer mit Integer.parseInt umwandeln wollte.

Vielen Dank
Mi
 
kneitzel

kneitzel

Top Contributor
Das ist dann der leere String. Du hast ja nicht nur null (was bedeutet, dass es keinen String gibt) sondern ein String kann auch leer sein.
 
M

MiMa

Top Contributor
Ich hatte auch mit folgenden Zeilen keine Logausgabe erreicht.

Java:
if (titelnummer == "" ){
                LOG.info("Ein Leerer String-Wert");
            }

Ich hatte ganz vergessen mit equals zu vergleichen.
Manchmal sieht man den Wald vor Bäumen nicht :)
Mit folgenden Zeilen habe ich die Ausgabe dann doch erreicht.
Java:
if (titelnummer.equals("")){
                LOG.info("Ein Leerer String-Wert");
            }

Danke.
Mi
 
M

MiMa

Top Contributor
Habe wieder mal so ein kurioses Problem mit einem int Wert bei Beats per Minute (bpm).
In MP3Tag sehe ich das der Wert 0 für bpm tatsächlich angezeigt wird.
Ich gehe dann davon aus das der int Wert dann auch 0 ist.

Auszug aus der Metadatenentnahme
Java:
mp3Tags.setBpm(id3v2Tag.getBPM());                  // Beats per Minute (bpm)
Mit dieser Codezeile wird der Wert aus den Metadaten an die Set-Methode gegeben.
Dann sollte auch der Wert 0 in der Set-Methode ankommen.
In der Regel werte ich dann dort aus was bei verschiedenen Werte passieren soll.
Java:
public void setBpm(int bpm) {
        System.out.println("BPM : " + bpm);
        if (bpm != 0) {
            LOG.info("BPM nicht ist 0");
            this.bpm = bpm;
        } else {
            LOG.info("BPM ist 0")
        }
        LOG.info("Speichert die BPM : " + this.bpm + "\n");
    }

Das Kuriose ist, das schon in der Methode bei denen die Metadaten abgefragt werden mit der einzelnen Zeile
Java:
mp3Tags.setBpm(id3v2Tag.getBPM());
schon einen Fehlermeldung ausgibt die da heißt
Code:
Exception in thread "main" java.lang.NumberFormatException: For input string: "0 Bpm"
    at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2054)
    at java.base/jdk.internal.math.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
    at java.base/java.lang.Float.parseFloat(Float.java:455)
    at com.mpatric.mp3agic.AbstractID3v2Tag.getBPM(AbstractID3v2Tag.java:600)
    at SoundStation.SoundParserMP3agic.sucheMP3Tags(SoundParserMP3agic.java:70)
    at SoundStation.SoundStation.main(SoundStation.java:106)
D:\Programmierung\Netbeans SoundStation\SoundStation\nbproject\build-impl.xml:1330: The following error occurred while executing this line:
D:\Programmierung\Netbeans SoundStation\SoundStation\nbproject\build-impl.xml:968: Java returned: 1
BUILD FAILED (total time: 0 seconds)

Was mich auch etwas irritiert, das "0 BMP" ausgegeben wird? Der Datentyp ist doch int!?!
Das bedeutet, das der Wert gar nicht erst an die Set-Methode kommt?
Ich habe auch geprüft, ob die Variablen auch alle den richtigen Typ haben und so ist es!

Wenn ich aber jetzt in der Methode wo die Metadaten entnommen werden folgenden Code eingebe
Java:
//            mp3Tags.setBpm(id3v2Tag.getBPM());                  // Beats per Minute (bpm)
            try {
                 if (id3v2Tag.getBPM() != 0) {
                LOG.info("BPM nicht ist 0");
                mp3Tags.setBpm(id3v2Tag.getBPM());
            }
            } catch (Exception e) {
                LOG.info("BPM ist 0");
                mp3Tags.setBpm(0);
            }
dann funktioniert der Code auch ohne Fehlermeldung?!??
Am liebten möchte ich das in der Set-Methode machen.

Danke
Mi
 
Zuletzt bearbeitet:
L

LimDul

Top Contributor
Der Code funktioniert nicht ohne Fehlermeldung. Du verschluckst nur die Fehlermeldung im Catch-Block, dir fliegt da eine Exception um die Ohren. Weil in den MP3-Tag was drin steht, was die Bibliothek, die du verwendest, nicht parsen kann und die keine saubere Fehlerbehandlung hat. Das heißt, du musst die Exception fangen (dann aber bitte die spezifische und nicht generell die generische Exception). Lösen kannst du das, wenn du in der Set-Methode machen willst, in dem du da nicht den Wert rein gibts sondern eine Methodenreferenz:

Java:
public void setBpm(Supplier<Integer> bpmSupplier) {
         try {
         int bpm = bpmSupplier.get();
        System.out.println("BPM : " + bpm);
        if (bpm != 0) {
            LOG.info("BPM nicht ist 0");
            this.bpm = bpm;
        } else {
            LOG.info("BPM ist 0")
        }
    } catch (NumberFormatException e) {
      LOG.info("BPM ist ungültig, setze auf 0")
      this.bpm = 0;
    }
   LOG.info("Speichert die BPM : " + this.bpm + "\n");  
}

Der Aufruf erfolgt dann mittels:
Java:
mp3Tags.setBpm(id3v2Tag::getBPM);                  // Beats per Minute (bpm)
 
M

MiMa

Top Contributor
Die Methode in der die Metadaten gelesen werden ruft zwar die Set-Methode auf aber es wird kein Wert übergeben.
Den Wert holt sich die Set Methode dann über den Supplier?
Habe ich das so richtig verstanden?
 
L

LimDul

Top Contributor
Genau. Erst bei Aufruf von bpmSupplier.get() wird die Methode getBpm aufgerufen.
 
M

MiMa

Top Contributor
Vielen Dank, wieder was neues gelernt :)
Im Grunde wollte ich zum extrahiere Apache Tika verwenden, aber mit dieser Bibliothek kann ich ein paar Werte nicht ermitteln und MP3agic finde ich eigentlich ganz gut, bis auf einige wenige Ausnahmen. Schade nur das es scheinbar nicht weiter entwickelt wird.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Auf vorhandenes Window zeichnen? Allgemeine Java-Themen 2
I serialVersionUID - explizit vergeben oder nicht? Allgemeine Java-Themen 6
L Hä? Lambda-Ausdruck geht, Methoden-Referenz nicht Allgemeine Java-Themen 8
O Jar lässt sich auf bestimmten Pc nicht starten Allgemeine Java-Themen 18
T Fremde Typen mockt man nicht? Allgemeine Java-Themen 3
Killunox MaxHeap Zuweisung unter Linux funktioniert nicht Allgemeine Java-Themen 1
L Direktes return eines Array geht nicht Allgemeine Java-Themen 20
B neuroph hält beim XOR lernen nicht an Allgemeine Java-Themen 13
kodela JDialog zeigt Text nicht an Allgemeine Java-Themen 5
Dann07 Java-Programm findet DLLs nicht! Allgemeine Java-Themen 20
D Twitch API mit HttpURLConnection läuft nicht? Allgemeine Java-Themen 0
M Test geht auf Travis und mit Github Action schief aber nicht lokal Allgemeine Java-Themen 3
R Threads Clip loop loopt nicht Allgemeine Java-Themen 2
Dann07 MP3 Datei abspielen funktioniert nicht Allgemeine Java-Themen 6
W Server-Thread schreibt nicht alle Dateien Allgemeine Java-Themen 6
NicoDeluxe JMS Messages nicht abgeholt Allgemeine Java-Themen 0
O Aus JAR-Datei erstellte EXE-Datei funktioniert nicht Allgemeine Java-Themen 10
A Mp3 Player funktioniert nicht Allgemeine Java-Themen 0
W String -> byte[] -> String - Sieht jemand was ich nicht sehe? Allgemeine Java-Themen 10
M Console geht nicht auf (Windows 10) Allgemeine Java-Themen 3
J Hilfe, Jar Datei kann nicht ausgeführt werden Allgemeine Java-Themen 2
W Enumeration ein Array/List als Eigenschaft mitgeben - warum geht das nicht? Allgemeine Java-Themen 0
W Javac nicht bei Installation installiert Allgemeine Java-Themen 9
S HTML den ich von einer URL hole nicht identisch mit dem HTML im Browser Allgemeine Java-Themen 1
S Java.exe exestiert, aber irgendwie auch nicht Allgemeine Java-Themen 11
D ArrayListe delete Methode klappt nicht Allgemeine Java-Themen 12
M Programm erkennt String aus .txt Datei nicht Allgemeine Java-Themen 3
X JNA funktioniert nicht mehr Allgemeine Java-Themen 4
O Java-Applikation tut in Netbeans, als JAR nicht, wegen Pfadangaben einer benötigten Datei Allgemeine Java-Themen 8
Drachenbauer Wie finde ich den Aufrufer zu einer Methode, die sich nicht in meinem Projekt befindet? Allgemeine Java-Themen 2
Drachenbauer Division mit Int funktioniert nicht Allgemeine Java-Themen 3
Elyt Compiler-Fehler Datei kann nicht erstellt werden. Die Syntax für den Dateinamen etc. ist falsch. Allgemeine Java-Themen 2
I Vererbung Nicht erklärliche NullPointerException Allgemeine Java-Themen 7
M String lässt sich nicht Zusammenfügen Allgemeine Java-Themen 10
R Schlüsselworte "Throw new exception" gibt nicht den String als Fehlermeldung aus Allgemeine Java-Themen 2
W Dateien werden nicht gelöscht - warum? Allgemeine Java-Themen 12
W Was genau sind IOTools? Kann ich stattdessen nicht die Scanner Klasse verwenden? Allgemeine Java-Themen 3
O docx-Datei erzeugung mit DocXStamper funktioniert nicht Allgemeine Java-Themen 2
B Java Mail: Prüfen, ob Email hat ein Anhang oder nicht Allgemeine Java-Themen 2
F Scrollbar wird nicht angezeigt Allgemeine Java-Themen 0
B Discord Bot - Funktion wird nicht aufgerufen Allgemeine Java-Themen 1
F URI mit Parameter klappt nicht Allgemeine Java-Themen 1
B Mail: Nicht vorhandener Empfänger ermitteln Allgemeine Java-Themen 4
I Temp-Datei wird nicht gelöscht Allgemeine Java-Themen 12
G Jar lässt sich mit macOS nicht starten Allgemeine Java-Themen 9
E Hat der Compiler einen Fehler oder warumbeendet return nicht eine Methode ? Allgemeine Java-Themen 7
J JTextField nicht editierbar Allgemeine Java-Themen 5
X Files.walkFileTree zählt nicht richtig Allgemeine Java-Themen 2
F Schleife funktioniert nicht richtig Allgemeine Java-Themen 13
T Split() Methode funktioniert nicht?! Allgemeine Java-Themen 11
H Erste Schritte Ausführbare Dateien lassen sich nicht starten Allgemeine Java-Themen 5
X Eclipse Kann fann/j nicht in Eclipse linken... Allgemeine Java-Themen 6
A Eclipse Hauptklasse konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 7
T JSoup findet input Feld nicht?! Wie kann ich das Feld finden? Allgemeine Java-Themen 3
S Validation Null aber nicht Blank und muss Email sein Allgemeine Java-Themen 22
Trèfle Excel-Datei nicht speicherbar, da von Java zum Bearbeiten gesperrt. Allgemeine Java-Themen 3
L Tesseract-OCR 4.0 unter Linux funktioniert nicht Allgemeine Java-Themen 3
G JPanel lädt nicht?! Allgemeine Java-Themen 20
A Variablen Funktion übergibt den Wert nicht Allgemeine Java-Themen 13
coolian lwjgl GLContextCurrent existiert nicht? Allgemeine Java-Themen 2
D Compiler-Fehler JavaFX - Bekomme Fehlermeldungen nicht weg Allgemeine Java-Themen 31
coolian Methoden warum funktonirt das nicht? Allgemeine Java-Themen 8
A Finde den Fehler nicht. Allgemeine Java-Themen 7
pkm Kann eine ServerSocket-Klasse nicht stateful sein? Allgemeine Java-Themen 4
T statische Variable und nicht-statische Methode Allgemeine Java-Themen 2
J Neuronales Netz funktioniert mal und mal nicht. Allgemeine Java-Themen 3
T Umlaute in Eclipse einlesen funktioniert nicht Allgemeine Java-Themen 16
I Modelio kann nicht geöffnet werden Allgemeine Java-Themen 3
E Socket Java Socket Antwortet nicht. Allgemeine Java-Themen 2
M Matcher-Klasse findet match nicht Allgemeine Java-Themen 6
P Erste Schritte HauptFrame geht nicht Allgemeine Java-Themen 7
N Programm startet nicht, nur per cmd Allgemeine Java-Themen 5
J Threads verbessern die Performance NICHT ? Allgemeine Java-Themen 8
P Variable wird in for - loop nicht richtig hochgezählt Allgemeine Java-Themen 11
K Eclipse Java findet MySQL Driver nach export nicht mehr Allgemeine Java-Themen 2
A Methodenaufruf funktioniert nicht richtig Allgemeine Java-Themen 5
H .jar Datei startet nicht richtig bei Doppelklick Allgemeine Java-Themen 11
FRI3ND JFrame wird nicht angezeigt Allgemeine Java-Themen 3
C BufferedReader/BufferedWriter schreibt nicht alle Bytes Allgemeine Java-Themen 2
M 4 Gewinnt KI macht nicht, was sie soll.. Allgemeine Java-Themen 1
C WindowBuilder Design funktioniert nicht Allgemeine Java-Themen 0
J Überschriebene Funktion soll nicht die super Funktion aufrufen Allgemeine Java-Themen 4
J FTPSClient funktioniert nicht Allgemeine Java-Themen 4
H IDEA IntelliJ Java Mail funktioniert nach Export nicht mehr! Allgemeine Java-Themen 1
M Operatoren Warum funktioniert diese überprüfung nicht? Allgemeine Java-Themen 7
scitex Klasse kann nicht public deklariert werden Allgemeine Java-Themen 2
R jar-Datei funktioniert nicht Allgemeine Java-Themen 2
E Open Declaration Funktioniert nicht Allgemeine Java-Themen 0
ralfb1105 LogManager logger schreibt nicht in Catch() Zweig Allgemeine Java-Themen 2
R Verschlüsselung funktioniert nicht Allgemeine Java-Themen 5
M Resourcen im Jararchiv nicht abrufbar Allgemeine Java-Themen 7
T Plötzlich wird package nicht mehr gefunden Allgemeine Java-Themen 3
T Jar Datei nicht ausführbar Allgemeine Java-Themen 6
RalleYTN requires transitive funktioniert nicht? Allgemeine Java-Themen 7
D Java zeigt Buttons nicht korrekt an Allgemeine Java-Themen 0
N Bei Mouse Events nicht mehrere Objekte erstellen Allgemeine Java-Themen 13
S Datei wird nicht gefunden Thread.currentThread().getContextClassLoader().getResourceAsStream() Allgemeine Java-Themen 1
mrbig2017 Sleep wird ignoriert und der Thread wartet nicht Allgemeine Java-Themen 1
mrbig2017 Threads wait wird nicht durch notify beendet! Allgemeine Java-Themen 3
P Best Practice Wieso funktioniert der Modulo - Operator nicht? Allgemeine Java-Themen 2

Ähnliche Java Themen

Anzeige

Neue Themen


Oben