Plugin-Alpha: CRM114-Klassifikator

Fehler in TV-Browser
henryk
Junior Member
Beiträge: 35
Registriert: 30 Aug 2004, 01:20

Unmögliche Null-Pointer

Beitrag von henryk »

Moin,

Ich verstehe das nicht. Ihr habt jetzt alle drei Referenzen auf CachingCrmClassifier.getCache() gefunden.
bodo hat geschrieben:Also ich hab jetzt alle Dateien gelöscht, die zu deinem Plugin gehören (inkl. der top/flop dinger) und die neue Version runtergeladen.

Leider hab ich immernoch den Nullpointer.

Beim speichern passiert auch ein Nullpointer

Code: Alles auswählen

SCHWERWIEGEND: [PluginLoader.error.3#Saving data for plugin CRM114-Klassifikator failed!
(/home/bodum/.tvbrowser/crmtv.CrmTv.dat)]
java.lang.NullPointerException
	at crmtv.CrmTv.writeData(CrmTv.java:366)
Ich kenn das, Nullpointer jagen is ech übel ;)...aber das packste schon noch :)
Der betreffende Code ist

Code: Alles auswählen

               crmClassifier.getCache().deleteOld(60 * 60 * 24 * 14);
crmClassifier ist wie schon gesagt ganz bestimmt nicht null. Das ist ein Objekt vom Typ CachingCrmClassifier (bzw. jetzt KeyedCachingCrmClassifier, aber das tut nichts zu Sache) und bietet eine Funktion getCache() an, die nichts weiter macht als das intern gespeicherte Cache-Objekt zurückzugeben.

Den Code dafür habe ich jetzt sogar schon aufgebohrt:

Code: Alles auswählen

        public CrmClassificationCache getCache() {                              
                if(cache == null) {                                             
                        System.err.println("This is impossible");               
                        cache = new CrmClassificationCache();                   
                }                                                               
                return cache;                                                   
        }                                                                       
Und du willst mir erzählen das gibt immer noch null zurück? Was hat deine Java-Laufzeitumgebung geraucht? Sie soll weniger davon nehmen.

Das beste ist ja: Hier[tm] passiert all das gar nicht.

--
Henryk Plötz
Grüße aus Berlin
Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo »

Also "This is impossible" wird bei mir nicht ausgegeben...

Was passiert in der Zeile beim Speichern? Da is ja auch ein Nullpointer.

Ich verwende die Version von da: http://www.ploetzli.ch/crmtv/0.2/CrmTv.jar

Das hab ich gerade nochmals runtergeladen mit einem anderen Programm, um auszuschließen das das hier gecached wird...

Wir finden den Fehler schon noch :).

Oder geb mir einfach deinen Quelltext und ich versuch mal rumzuwüllen...
henryk
Junior Member
Beiträge: 35
Registriert: 30 Aug 2004, 01:20

Beitrag von henryk »

Moin,
bodo hat geschrieben:Was passiert in der Zeile beim Speichern? Da is ja auch ein Nullpointer.
Alle drei Zeilen haben das getCache() und direkt dahinter den Aufruf einer Methode des cache-Objekts gemeinsam (und das sind auch die einzigen drei Zeilen ;). Wenn der Fehler _in_ der gerufenen Methode auftreten würde, würde man das ja im Stacktrace sehen.
bodo hat geschrieben:Ich verwende die Version von da: http://www.ploetzli.ch/crmtv/0.2/CrmTv.jar


Ja, ist richtig.
bodo hat geschrieben:Oder geb mir einfach deinen Quelltext und ich versuch mal rumzuwüllen...
Ist immer alles in den jars mit drin, musst du nur noch auspacken (oder in Eclipse oder so laden).

--
Henryk Plötz
Grüße aus Berlin
Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo »

crmClassifier ist null !

Ich schau mal, warum :)
Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo »

Jetzt weiß ich auch warum:
Du unterdrückt eine Exception...sowas sollte man nich machen *g*

Code: Alles auswählen

SCHWERWIEGEND: Ein nicht behandelter Fehler ist aufgetreten
java.io.FileNotFoundException: badCssFiles[0] does not exist or is not a file
	at crmtv.CrmClassifier.<init>(CrmClassifier.java:105)
	at crmtv.CachingCrmClassifier.<init>(CachingCrmClassifier.java:41)
	at crmtv.CrmTv.crmClassify(CrmTv.java:119)
	at crmtv.CrmTv.execute(CrmTv.java:272)
	at tvbrowser.core.PluginManager$5.actionPerformed(PluginManager.java:378)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786)
	at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1839)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
	at javax.swing.AbstractButton.doClick(AbstractButton.java:289)
	at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1113)
	at javax.swing.plaf.basic.BasicMenuItemUI$MouseInputHandler.mouseReleased(BasicMenuItemUI.java:943)
	at java.awt.Component.processMouseEvent(Component.java:5100)
	at java.awt.Component.processEvent(Component.java:4897)
	at java.awt.Container.processEvent(Container.java:1569)
	at java.awt.Component.dispatchEventImpl(Component.java:3615)
	at java.awt.Container.dispatchEventImpl(Container.java:1627)
	at java.awt.Component.dispatchEvent(Component.java:3477)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
	at java.awt.Container.dispatchEventImpl(Container.java:1613)
	at java.awt.Window.dispatchEventImpl(Window.java:1606)
	at java.awt.Component.dispatchEvent(Component.java:3477)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
henryk
Junior Member
Beiträge: 35
Registriert: 30 Aug 2004, 01:20

Beitrag von henryk »

Moin,
bodo hat geschrieben:Jetzt weiß ich auch warum:
Du unterdrückt eine Exception...sowas sollte man nich machen *g*
Hmm, oh, öhm :oops:

Jetzt wo du's sagst: Das stimmt, das ist sogar by design so. Beim Instanziieren des Classifiers kann eigentlich das nicht-vorhanden-sein der css-Dateien so ziemlich als einziges schiefgehen (wenn man einmal vorher in der Konfiguration war). Und das korrigiert sich automatisch wenn zwei Sachen eingelernt wurden. Ich wollte halt die Dateien nicht irgendwo anders erzeugen, weil ich dazu cssutil aus der crm-Installation bräuchte und dazu dann vielleicht sogar noch den Pfad dorthin abfragen müsste.

Da ich auf den Fehler also ohnehin nicht reagieren kann und er sich von selbst behebt, hielt ich es für sinnvoll den einfach zu ignorieren. Dass das natürlich jetzt mit dem Cache ..., hmm, mist.

Ok, ich hab das jetzt für den Augenblick gefixt und alle drei Referenzen auf den classifier mit einem if geschützt. Für die Zukunft muß ich mir was ausdenken die .css-Files präventiv zu erzeugen, und dann kann ich auch evt. trotzdem auftretende Exceptions nach aussen melden.

--
Henryk Plötz
Grüße aus Berlin
Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo »

So, jetzt tuts auch bei mir !

Wie gut funktioniert die bewertung eigentlich bei dir ? Oder hast du noch nicht genug Daten trainiert?!

Til und alle andern:
Könnt jetzt wieder testen :).
Benutzeravatar
Til
Site Admin
Beiträge: 1498
Registriert: 04 Dez 2003, 11:21
Wohnort: Karlsruhe
Kontaktdaten:

Beitrag von Til »

OK. Ich bekomme jetzt keine Fehler mehr, die Klassifizierungsdateien wurden auch angelegt (9 und 12 MB groß !!)

Allerdings wird in der Programmtabelle auch nichts angezeigt... (Ich hab in den Einstellungen natürlich angegeben, dass das Plugin seine Icons zeigen soll) :?
Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo »

Du mußt noch angeben, für welche Sender der das machen soll...da ja die Icons sehr rechenintensiv sind, hat henryk das einstellbar gemacht :)
Benutzeravatar
Til
Site Admin
Beiträge: 1498
Registriert: 04 Dez 2003, 11:21
Wohnort: Karlsruhe
Kontaktdaten:

Beitrag von Til »

Hab wieder mal nen Fehler bekommen:
Das Plugin "CRM114-Klassifikator" hat einen Fehler verursacht.

----- Start of stacktrace -----
java.lang.IllegalArgumentException
at crmtv.CrmClassification.<init>(CrmClassification.java:50)
at crmtv.CrmClassifier.classify(CrmClassifier.java:154)
at crmtv.CachingCrmClassifier.classifyUncached(CachingCrmClassifier.java:59)
at crmtv.KeyedCachingCrmClassifier.classify(KeyedCachingCrmClassifier.java:41)
at crmtv.CrmTv.crmClassify(CrmTv.java:125)
at crmtv.CrmTv.getProgramTableIcons(CrmTv.java:319)
at tvbrowser.core.plugin.JavaPluginProxy.doGetProgramTableIcons(JavaPluginProxy.java:412)
at tvbrowser.core.plugin.AbstractPluginProxy.getProgramTableIcons(AbstractPluginProxy.java:583)
at util.ui.ProgramPanel.getPluginIcons(ProgramPanel.java:304)
at util.ui.ProgramPanel.setProgram(ProgramPanel.java:225)
at util.ui.ProgramPanel.setProgram(ProgramPanel.java:205)
at util.ui.ProgramPanel.<init>(ProgramPanel.java:126)
at tvbrowser.ui.programtable.DefaultProgramTableModel.addChannelDayProgram(DefaultProgramTableModel.java:135)
at tvbrowser.ui.programtable.DefaultProgramTableModel.updateTableContent(DefaultProgramTableModel.java:178)
at tvbrowser.ui.programtable.DefaultProgramTableModel.setDate(DefaultProgramTableModel.java:149)
at tvbrowser.ui.mainframe.MainFrame.changeDate(MainFrame.java:586)
at tvbrowser.ui.mainframe.MainFrame.dateChanged(MainFrame.java:600)
at tvbrowser.ui.finder.FinderItem$1.run(FinderItem.java:114)
----- End of stacktrace -----
Benutzeravatar
Til
Site Admin
Beiträge: 1498
Registriert: 04 Dez 2003, 11:21
Wohnort: Karlsruhe
Kontaktdaten:

Beitrag von Til »

Jetzt funktioniert das Plugin (trotz des Fehlers).

Der erste Eindruck: Die Icons sind für meinen Geschmack etwas groß geraten, sonst haben wir in der Tabelle 16x16-Icons verwendet. Außerdem ist es etwas komisch, wenn man eine Sendung z.B: als "Flop" lernt, weil sie danach immer noch als als "Top" angezeigt wird. Evtl. sollte dort wieder der Markierungs-Trick angewendet werden (so als visuelle Rückmeldung).

Aber so im großen und ganzen sieht das Plugin sehr vielversprechend aus! :wink: Es bleibt natürlich noch abzuwarten, wie gut die Mustererkennung funktioniert. Dazu muss man halt mal ein paar Sachen gelernt haben...
Benutzeravatar
Siggi
Moderator
Beiträge: 2272
Registriert: 31 Dez 2003, 12:21
Wohnort: Doberlug - Kirchhain

Beitrag von Siggi »

Hallo!

Kann mir mal einer erklären, wie ich die Database (und vor allem welche) ich unter Windows installiere und einrichte?

Die Dateiendung ist ja .gz und das ist irgendwie nichts für Windows.
Ich hoffe da gibt es eine Lösung wie man das einrichtet und auch unter Windows nutzen kann.

Ich habe die aktuellste Version (1.5 RC) drauf.

Danke für Erklärungen.
mfg Siggi

PS: Wer Fehler findet, darf Sie behalten!!! :-)
Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo »

Das CRM-Ding gibt es leider nur für Linux. Ich weiß nich, ob man das irgendwie unter Windows einsetzen könnte...
henryk
Junior Member
Beiträge: 35
Registriert: 30 Aug 2004, 01:20

Beitrag von henryk »

Moin,
bodo hat geschrieben:Das CRM-Ding gibt es leider nur für Linux. Ich weiß nich, ob man das irgendwie unter Windows einsetzen könnte...
Naja, der Code ist halt offen und die Webseite spricht davon dass auch Leute das unter Windows einsetzen (sogar zusammen mit Outlook!). Dabei kann ich aber leider in Ermangelung eines Windows nicht helfen.

--
Henryk Plötz
Grüße aus Berlin
Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Beitrag von bodo »

Jau...hab ich auch gelesen...aber es gibt halt nur Binary-Files für Linux. Hab leider auch kaum Ahnung von C++ und bin echt selten unter Windows, sonst würd ich mir das mal ansehen...
Antworten