JAR nachträglich updaten/editieren
lima-city → Forum → Programmiersprachen → Java
art
bibliothek
bild
datei
format
formel
laden
laufzeit
liegen
ordner
performance
programm
programmstart
richtig formeln
speichern
text
textform
tun
url
zeichnen
-
Kann mir jmd. auf die Sprünge helfen?
Problemstellung:
Es gibt ein Programm (.jar) mit dem User mathematische Berechnungen/Umformungen anstellen kann. Dort gibt es u.a. einige Tabellen, wo User in der Lage ist, eine (oder mehrere) neue Spalte hinzuzufügen. Das eigentliche Problem besteht im TableHeader, da man es mit math. Formeln zu tun hat und der Titel demnach nicht so schön aussieht, wenn man es mit reinem Text macht.
Wo ich mit HTML weiter komme (z.B. für grich. Buchstaben), belasse ich es dabei, aber wenn es komplexe Formeln/Überschrift vonnöten sind, stößt HTML-Formatierung an ihre Grenze. Dort arbeite ich dann mit einem eigenen TableHeaderRenderer, der auf Wunsch anstelle von Text Bilder nutzt, die ich im Vorfeld bereits in den Source Ordner gepackt habe und die dann aus der .jar gelesen werden. Nun kann ich aber nicht alle Formeln abdecken, weswegen es dem User möglich ist, eigene Bilder (Formeln) anstelle vom Text zu laden.
Meine bisherige Lösung sieht vor, dass das Bild, welches der User angibt, in den Unterverzeichnis des .jar-Ordners kopiert wird, wo die "conifg"-Dateien liegen und beim nächsten Start den Pfad für das/die Bild/er von hier bezieht.
Die Frage, die ich mir stelle - kann man die .jar Datei nachträglich editieren, ohne das Programm neu kompilieren zu müssen? Nach meiner bisherigen Recherche ist die .jar zur Laufzeit gesperrt und damit keine schreibende Zugriffe möglich sind. Daher dachte ich, dass ich einen Art "Updater" schreibe, der die "Haupt"-JAR mit den neu hinzugekommenen Bildern ergänzt.
Bloß sind die .jar-Dateien überhaupt dazu gedacht, verändert zu werden? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
b33st schrieb:
Jar-Dateien sind nicht dazu gedacht verändert zu werden. Bevor du eine jar-Datei veränderst legst du im Ordner, in dem die jar-Datei liegt die Daten ab. Aber auch das ist für Formeln nicht sonderlich sinnvoll, denn du kannst in Java Formeln direkt rendern. Sieh dir dazu diese Bibliothek an: JLaTeXMath
Bloß sind die .jar-Dateien überhaupt dazu gedacht, verändert zu werden?
Du gibst dieser Bibliothek Formeln im LaTeX-Format und bekommst ein Bild heraus. Das kannst du direkt auf einer GUI zeichnen. Dann brauchst du allerdings keine eigenen Bilder pro Formel mehr zu speichern … -
Also die Bilder bei meinem Java-Programm liegen in einem Resources Ordner im Ausführungsverzeichnis. Ich würde die Bilder nicht in eine JAR-Datei verpacken sondern eben offen dazu geben.
Die Ordnerstruktur sieht so aus:
. |-Program.jar |-res |-pictures | |-picture1.jpg | |-picture2.jpg |-translation |-translation.csv
Beitrag zuletzt geändert: 22.1.2015 17:15:17 von schrotti12 -
schrotti12 schrieb:
Also die Bilder bei meinem Java-Programm liegen in einem Resources Ordner im Ausführungsverzeichnis. ...
Der ursprüngliche Gedanke war, dass das Programm leicht portierbar sein sollte. Daher erschien mir die Lösung Bilder direkt in .jar zu packen sinnvoller als den Ordner mit dem Hauptrogramm und ggf. mit Unterverzeichnissen beim "Umzug" mit kopieren zu müssen.
hackyourlife schrieb:
Du gibst dieser Bibliothek Formeln im LaTeX-Format und bekommst ein Bild heraus. Das kannst du direkt auf einer GUI zeichnen. Dann brauchst du allerdings keine eigenen Bilder pro Formel mehr zu speichern ?
Verstehe ich das richtig - Formeln in Textform speichern (mit dazu gehöriger Config-Datei) und anstelle Bilder zu laden werden diese dann einfach beim Programmstart neu erzeugt?
Also z.B. User hat eine neue Formel "C = A + B" hinzugefügt und anstelle diese in Bild zu speichern wird diese in Textform abgelegt und beim Programmstart als Text eingelesen und neu "gezeichnet"? -
b33st schrieb:
Naja, du hast doch geschrieben, dass du normal HTML nimmst, und wenn das nicht reicht, dann speicherst du die Formel als PNG. In dem Fall speicherst du dir nur eine Formel ala »f(x) = \frac{1}{2} x^3«, die dann so dargestellt wird:
Verstehe ich das richtig - Formeln in Textform speichern (mit dazu gehöriger Config-Datei) und anstelle Bilder zu laden werden diese dann einfach beim Programmstart neu erzeugt?
Also z.B. User hat eine neue Formel "C = A + B" hinzugefügt und anstelle diese in Bild zu speichern wird diese in Textform abgelegt und beim Programmstart als Text eingelesen und neu "gezeichnet"?
Das hat noch den Vorteil, dass diese Formel direkt verändert werden kann, ohne irgendwelche Bildchen neu generieren zu müssen. Also speicherst du es auf die Art, wie du das sonst mit deinem HTML machst.
Übrigens: das kann nicht nur Mathematik darstellen, sondern auch griechische Buchstaben, Farben usw. -
hackyourlife schrieb:
[...] Naja, du hast doch geschrieben, dass du normal HTML nimmst, und wenn das nicht reicht, dann speicherst du die Formel als PNG.
Yope, du hast es richtig verstanden.
b33st schrieb:
[...] Formel ... in Textform abgelegt und beim Programmstart als Text eingelesen und neu "gezeichnet"?
Damit meinte ich, dass die Formeln (die .png'S, die von JLaTeX geliefert werden) temporär, also nur zur Laufzeit erzeugt werden und beim Schließen des Programms quasi dann "weg" sind. Der Text - die eigentliche Formel, wird aber gespeichert und beim nächsten mal bzw. beim nächsten Programmstart als Bild neu erzeugt usw halt.
(Oder man stellt sich klug an und schaut vorher, ob nötigen Bilder überhaupt erst erzeugt werden müssen. Aber das hat jetzt mit dem eigentlichen Thema wenig zu tun und geht eher in die Richtung der Optimierung/Effizienz)
Positiver Nebeneffekt, den du bereits erwähnt hast, ist die Flexibilität und dass man sich nicht mit Pathangaben bzw. Bildern "rumschlagen" muss und ich vermute (oder eher erhoffe) allzu viel Performance wird es auch nicht kosten.
Aber nun gut. Das ist jetzt Theorie. Ich werde mir das die Tage anschauen. Danke auf jeden Fall für den Tipp mit dem JLaTeX! -
b33st schrieb:
PNGs musst du zu keinem Zeitpunkt erstellen. JLaTeXMath liefert dir ein Icon-Objekt, das du direkt in der GUI zeichnen kannst. Wenn du ein PNG erstellen willst, musst du dich selbst darum kümmern, wie du aus dem Icon ein PNG bekommst. Sieh dir einfach das Beispiel an: *klick*.
Damit meinte ich, dass die Formeln (die .png'S, die von JLaTeX geliefert werden) temporär, also nur zur Laufzeit erzeugt werden und beim Schließen des Programms quasi dann "weg" sind.
Performance? Kein Problem, solang du nicht tausende solcher Formeln hast, die dann vllt auch noch sehr lang und komplex sind -
Noch ist es recht überschaubar. Wobei ich denke, dass es auch so bleibt.
Aber jetzt ist erst mal Lecture angesagt, bevor ich blind drauflos stürme. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage