JFritz weiterentwickeln; JFritz unter NetBeans Starten/Debuggen

cw2k

Neuer User
Mitglied seit
14 Jun 2010
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
Wollte mich mal ranmachen sodass die Kurzwahl von Box holen für JFritz endlich funzt.

Nur JFritz CVS Howto funzt super.
Ich kriege es mit build.xml\build compiliert.
Starten geht mit
javaw -jar jfritz\ant\dist\fritzbox.jar
oder indem ich die Start-JFritz.bat in \ant\dist\ kopiere und starte.


Nur unter Netbeans Starten oder Debuggen geht nicht.
Ich habe mir sogar extra die Antikversion Netbeans 5.0 installiert
(Tipp DL von netbeans.org war super grotten lahm. Das Bundle mit J2SE v 1.4.2_13 SDK von sun.com ist zwar doppelt so groß, ging aber wenigsten zum DL)

So -auf die schnelle- Kunstgriffen wie
<import file="nbproject/build-impl.xml"/>
in Build.xml einfügen
wie ich sie mir vom AnagramGame Beispielprojekt abgeguckt haben, waren auch nicht wirklich von Nutzen.
Jetzt steht da bei Build.xml Ant-Targets zwar Run - aber funzen tut es nicht.

Code:
Building JFritz...
compile:
JFritz - 0.7.2.30 compiled!
run:
C:\Programme\JFritz\!CVS\jfritz\nbproject\build-impl.xml:342: Could not create task or type of type: http://www.netbeans.org/ns/j2se-project/1:java.
Ant could not find the task or a class this task relies upon.
This is common and has a number of causes; the usual 
solutions are to read the manual pages then download and
...
build-impl.xml:
    <!--
    =================
    EXECUTION SECTION
    =================
    -->
    <target name="run" depends="init,compile" description="Run a main class.">
        <j2seproject1:java>
^^^^^^^^^^^^^^^^^^
Zeile 342 !!!
NS-Definition von weiter oben die vielleicht wichtig ist und damit zu tun hat
<project name="jfritz-impl" default="default" basedir=".." xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:j2seproject2="http://www.netbeans.org/ns/j2se-project/2" xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1">
Nach besonders sauberen und verständlichen Code sieht mir das mit dem 'j2seproject1' nicht aus.
Aber egal.

Hat jemand Tipps + ein paar Anhaltspunkte wie man mit NetBeans oder anderen Tool eine gescheite Entwicklungsumgebung für JFritz zaubern kann ?:lamer:
^^ Bitte hier oder gleich ins JFritz wiki post.
 
Habe die Quellen jetzt in Netbeans 7.0(Deutsch) zum 'Laufen' gebraucht.

Projekteigenschaften jFritz
  • Quellen
    Quellenverzeichnisse hinzufügen: "SRC\"
    Format JDK6 / Kodierung: Windows-1252
  • Bibliotheken
    JAR/Verzeichnis hinzufügen: in "LIB\" gehen und dort alle *.jar markieren dann noch
    "LIB-dev\ant.jar"
    Bibliothek Hinzufügen: JUnit 4.8.2
  • Ausführen
    Hauptklasse: de.moonflower.jfritz.Main
    Arbeitsverzeichnis: !CVS\jfritz

Auch wie schön das 'Kurzwahl von Box holen' schon implementiert war. (Weil *hinter-vorgehaltener-Hand-flüster* Ich kann doch gar kein Java.)

War nur ein kleiner Bug drin
!CVS\jfritz\src\de\moonflower\jfritz\dialogs\quickdial\QuickDials.java
Code:
public void getQuickDialDataFromFritzBox() throws WrongPasswordException, IOException, InvalidFirmwareException {

        if (JFritz.getFritzBox().getFirmware() [COLOR="red"][B]==[/B][/COLOR] null)
                if (JFritz.getFritzBox().checkValidFirmware()) {
                        quickDials = JFritz.getFritzBox().retrieveQuickDialsFromFritzBox(this); //$NON-NLS-1$
                        fireTableDataChanged();
                }
}
So ändern nach
Code:
	if (JFritz.getFritzBox().getFirmware() [COLOR="red"]!=[/COLOR] null)
und wie schön jetzt geht es.
Naja fast - bis auf die Namen die jetzt in der Kurzwahltabelle fehlen.
 
Die CVS-Version von jfritz ist aber steinalt. CVS wurde schon vor längerer Zeit auf Subversion umgestellt, das svn-Repository ist aber anscheinend nicht (mehr) öffentlich zugänglich.
 
Ja hab ich auch schon gemerkt und das wäre ja gleich das Nächste.
Im CVS ist die JFritz Version 0.7.2.30 vom März 2009!!!

Hmm solange sich die Änderungen auf 1-2 Files beschränken könnte ich die aktuellen .class Files dekompilieren, mit dem alten Quellen abgleichen und eventuelle Änderungen und Bugfixes einzupflegen.
Anschließend alles Kompilieren und die 1-2 .class Files wieder ins aktuelle .jar zurück packen.
Okay soweit zur Theorie und zum Plan.

Die aktuellen Sources wären natürlich noch besser.
Nur was halt nicht is, is nicht. ;)

Zu dem Name-fehlt-problem hab ich auch was gefunden:
Fritzbox.java
  1. Eine kleine Unschönheit in einem regulärem Ausdruck korrigieren
    Code:
            //Example match:
            //<script type="text/javascript">document.write(TrFon("10", "T-NetBox", "0800330242458272", "00", "A"));</script>
    	private final static String PATTERN_QUICKDIAL_BETA = "<script type=\"text/javascript\">document[COLOR="red"]\\.[/COLOR]write\\(TrFon\\(\"[^\"]*\", " //$NON-NLS-1$
    		+ "\"([^\"]*)\", "
    		+ "\"([^\"]*)\", "
    		+ "\"([^\"]*)\", "
    		+ "\"([^\"]*)\"\\)\\);</script>";
    Die RegExp vielleicht mal besser demaskiert also
    \" -> "
    \\ -> \
    und etwas anderes formatiert sodass man besser sieht, was passiert:
    Code:
    <script type="text/javascript">document\.write\(TrFon\([COLOR="darkorange"]"[^"][/COLOR][COLOR="royalblue"]*[/COLOR]", 
    "([COLOR="darkorange"]"[^"][/COLOR][COLOR="royalblue"]*[/COLOR])", 
    "([COLOR="darkorange"]"[^"][/COLOR][COLOR="royalblue"]*[/COLOR])", 
    "([COLOR="darkorange"]"[^"][/COLOR][COLOR="royalblue"]*[/COLOR])", 
    "([COLOR="darkorange"]"[^"][/COLOR][COLOR="royalblue"]*[/COLOR])"\)\);</script>
    zuvor stand dort
    ...document.write...
    der '.' ist aber ein RegExp Sonderzeichen und steht für alle Zeichen. Um da eine Punkt zu matchen muss man den mit '\.' maskieren. Alle Zeichen ist war auch nicht schlimm und geht auch - nur habe ich da so meine Erfahrungen was die Performance von '.' oder schlimmer noch '.*' in einer RegExp angeht.
  2. So jetzt zum dem Name-fehlt-Bug
    Das blaue ist der neue Code
    Code:
    [COLOR="gray"]// TODO: Name einfügen[/COLOR]
    while (m.find()) {
    [B][COLOR="gray"]     // Primär versuchen den 'Name' von der Fritzbox zu verwenden...[/COLOR]
    [COLOR="royalblue"]        String description;
            if (m.group(quickdial_indizes[NAME]) != "") {
                description = m.group(quickdial_indizes[NAME]);
    [COLOR="gray"]      // ...wenn der 'Name' leer (oder nicht festgelegt ist)...[/COLOR]
            } else {
    [/COLOR][COLOR="gray"]      // ...Namen in der aktuellen Liste -über die Nummer- finden.[/COLOR]
    [/B]            description = model.getDescriptionFromNumber(
                                    m.group(quickdial_indizes[NUMBER]));                       
            }
            list.add(new QuickDial(
                            m.group(quickdial_indizes[QUICKDIAL]),
                            m.group(quickdial_indizes[VANITY]),
                            m.group(quickdial_indizes[NUMBER]), 
                                    description));
    }
    return list;
    Komisch da hat da schon wer den part mit PATTERN_QUICKDIAL_BETA gemacht - und den [NAME] schon mal mit gematch und ausgelesen, aber später ist der dann auf den Strecke geblieben bzw. bei einem// TODO: Name einfügen stehengeblieben.
;)
 

Anhänge

  • JFritz 0.7.2.30.zip
    1.5 MB · Aufrufe: 2
Zuletzt bearbeitet:
Hi,

ich finde es super, dass du helfen willst, jedoch ist decompilieren der falsche Weg.

Ich schicke dir heute im Laufe des Tages die aktuellen Sourcen zu und wuerde dich gerne bitten vorerst nicht weiter zu machen.

Viele Gruesse,
Rob
 
@robot_rap: Gibt es irgendwann wieder einen "öffentlichen" SVN-Zugriff?
 
@chked: Es wird keinen anonymen Zugriff mehr geben, jedoch wird man den Quelltext bei mir anfordern koennen.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.