
SWING PDF Converter: Probleme und Fehler in der Darstellung beseitigen
Der Ausdruck mit SWING PDF unterscheidet sich stellenweise von der Darstellung/Vorschau in IBM Notes. Zwei Unterschiede sehen Sie hier. Mehr
von
Bernd Hort,
assono GmbH, Standort Hamburg,
Diese Erkenntnis hat mich einige Kopfschmerzen gekostet.
Damit
es anderen nicht auch so geht, sind hier die Details.
Zunächst als Erklärung zur Option -jar
beim Aufruf von java.exe. Wenn in einem Projekt mehrere Java-Klassen benötigt
werden, so können sie zusammen in einer komprimierten Datei gespeichert
werden. Eine solche Datei ist im Prinzip eine ZIP-Datei mit der Dateiendung
JAR. Damit der Java-Interpreter (java.exe) weiß, welche der Klassen er
beim Aufruf direkt ausführen soll, existiert in der JAR-Datei ein so genanntes
Manifest. Mit
java.exe -jar MyProject.jar
wird also Java so aufgerufen, dass in
der JAR-Datei nach dem Manifest gesucht wird und die dort angegebene Klasse
aufgerufen wird.
Wenn ich in Versionen vor Notes 8 eine
Kundenanforderung mit Standard-Notes-Mitteln nicht umsetzen kann, greife
ich gerne zu Java. Bisher habe ich dann einfach meinen Code in eine JAR-Datei
gepackt und im Verzeichnis [Notes-Programmpfad]\jvm\lib\ext abgelegt. (Wir
haben in unserem Framework einen Mechanismus, der solche Erweiterungen
automatisch beim Öffnen einer Datenbank auf dem Rechner des Anwenders verteilt.)
Wenn die JAR-Datei in diesem Verzeichnis liegt, spielt der Klassenpfad
(Classpath) keine Rolle, weil der Java-Interpreter automatisch in diesem
Verzeichnis sucht.
Nur hatte in einer Kundenumgebung die
Anwender kein Schreibrecht auf das Verzeichnis [Notes-Programmpfad]\jvm\lib\ext.
Insofern mussten wir die JAR-Datei in einem anderen Verzeichnis ablegen.
Weil das Java-Programm zwar aus dem Notes Client heraus aufgerufen werden
sollte, aber nicht als Java-Agent gestartet werden sollte, wurde der Java-Interpreter
direkt aufgerufen. Allerdings führte das zu der schönen Fehlermeldung
Exception in thread "main"
java.lang.NoClassDefFoundError: de/assono/demo/AnotherPackage
Der Java-Interpreter konnte also eine
benötige Klasse nicht finden, die sich in einer anderen JAR-Datei befand.
Die erste Überlegung war, dass wir vergessen
hatten, den Klassenpfad zu setzen. Eine Änderung des Aufrufs in
java.exe -jar -classpath ".;c:\temp\MyProject.jar;
c:\temp\AnotherPackage.jar;" MyProject.jar
brachte leider keine Verbesserung.
Nach einer etwas längeren Google-Recherche
bin ich dann in der Java-Dokumentation
fündig geworden.
-jar
...
When you use this option, the JAR file is the source of all user classes, and other user class path settings are ignored.
Die Lösung war dann relativ einfach.
Mit der einfachen Zeile Class-Path: AnotherPackage.jar
im Manifest kann der Klassenpfad angegeben
werden. Die Details stehen in einem Sun Tutorial.
Sie haben Fragen zu diesem Artikel? Kontaktieren Sie uns gerne: blog@assono.de
Der Ausdruck mit SWING PDF unterscheidet sich stellenweise von der Darstellung/Vorschau in IBM Notes. Zwei Unterschiede sehen Sie hier. Mehr
Viele inhaltliche ähnliche Kundenanfragen, die sich eigentlich leicht beantworten lassen? Warum sich genau jetzt ein Chatbot lohnt ... Mehr
Bevor es mit einer App losgehen kann, muss eine grundlegende Entscheidung getroffen werden: Welche technische Basis ist die richtige? ... Mehr
Refactoring lohnt sich. Wie wir die Base64-Decodierung von 9 Minuten auf 1 Sekunde gebracht haben (mit Quellcode) Mehr
Schneller Prozesse einleiten: Wie wäre es, wenn durch ein Foto und Künstliche Intelligenz direkt ein passender Workflow gestartet wird? Mehr
Web-Frontends mit Agular 7, Ansätze für die Entwicklung von Web-Apps, eine Einführung in Node.js und das neue Domino-DB-Modul im Fokus Mehr
Standort Kiel (Zentrale)
assono GmbH
Lise-Meitner-Straße 1–7
24223
Schwentinental
Standort Hamburg
assono GmbH
Bornkampsweg 58
22761
Hamburg
Telefonnummern:
Zentrale:
+49 4307 900 407
Techn. Hotline:
+49 4307 900 403
Vertrieb:
+49 4307 900 402
E-Mail-Adressen:
kontakt@assono.de
bewerbung@assono.de