Alex_winf01 Geschrieben 13. Juli 2006 Geschrieben 13. Juli 2006 Ich habe eine "blöde" Frage: Ich habe folgende Struktur: Ordner image --> Hier lege ich alle Bilder für meine Anwendung ab. Ordner POI --> Im Unterordner poi251 liegt die Meta-Inf und der org-Ordner für POI Nun habe ich für POI ein kleines Beispiel ausprobiert. Klappt auch solange ich die .java-Datei im Ordner POI liegen habe. Die import-Anweisung sieht wie folgt aus: import org.apache.poi.hssf.usermodel.HSSFCell; D. h. ja, im Ordner org --> Unterordner apache --> unterordner poi --> unterordner hssf --> Unterordner usermodel gibt es eine Klasse HSSFCell. Es ist Bedingung, dass ich beim Anwender den CLASSPATH und die PATH-Variable NICHT ändere (Vorgabe vom Unternehmen). Die import-Anweisung muss ich also meinem oben genannten Schema anpassen. D. h. die import-Anweisung müsste wie folgt aussehen: import POI.poi251.org.apache.poi.hssf.usermodel.HSSFCell; Wenn ich das so importiere, bekomme ich eine Fehlermeldung, dass POI kein gültiges package ist. Zitieren
perdian Geschrieben 13. Juli 2006 Geschrieben 13. Juli 2006 Es ist Bedingung, dass ich beim Anwender den CLASSPATH und die PATH-Variable NICHT ändere (Vorgabe vom Unternehmen).Dann wirst du nicht wirklich weiterkommen. import POI.poi251.org.apache.poi.hssf.usermodel.HSSFCell; Wenn ich das so importiere, bekomme ich eine Fehlermeldung, dass POI kein gültiges package ist.Natürlich, weil POI eben im Package org.apache.poi.hssf.usermodel.HSSFCell definiert ist und nicht in dem von dir angegebenen Package. Das wird während des Compiler-Vorgangs festgelegt und hat nichts mit der Art und Weise des späteren Deployments zu tun. Vielleicht beschäftigst du dich nochmal mit den Java Grundlagen bevor du weiterhin auf solche - höchst ungewöhnlichen - Ideen kommst. Zitieren
Alex_winf01 Geschrieben 13. Juli 2006 Autor Geschrieben 13. Juli 2006 @ perdi Mir sind die Grundlagen von Java sehr wohl bekannt. Sind die Vorgaben von meinem Unternehmen. Es gibt ja zwei Möglichkeiten, Package einzubinden: 1. Man bindet es in der CLASSPATH ein 2. Das Package liegt im Ordner der Anwendung Zu 2. habe ich folgendes Problem: Ich benötige noch den ODBC-Treiber für MySQL. Und da gibt es auch ein Ordner Meta-Inf. Vielleicht dazu einen Rat? Ich benötige beide Package bzw. Treiber!!! Und damit natürlich auch bei beiden eine Mainfest-Datei. Zitieren
perdian Geschrieben 13. Juli 2006 Geschrieben 13. Juli 2006 Mir sind die Grundlagen von Java sehr wohl bekannt.Und dann kommst du trotzdem auf die Idee "einfach mal so" den Package-Namen zu verändern? Das passt nicht zusammen. Sind die Vorgaben von meinem Unternehmen.Dann musst du demnjenigen in deinem Unternehmen, der die Vorgaben gemacht hat, sagen, dass du die gewünschten Features ohne eine Veränderung am Classpath nicht in die Applikation mit aufnehmen kannst. 2. Das Package liegt im Ordner der AnwendungDas allerdings auch nur dann - und genau dann - wenn der Classpath auch den Ordner der Applikation mit einschließt. Das ist - je nach Deployment - nicht automatisch der Fall. Und ohne genau diese Deploymentstruktur zu kennen wird dir hier auch niemand genau sagen können, an welcher Schraube du eventuell drehen könntest. Also: Wie genau wird die Applikation gestartet? (Kommandozeilenbefehl raussuchen) Und damit natürlich auch bei beiden eine Mainfest-Datei.Was bringt dich auf den Gedanken unbedingt die Manifestdatei zu brauchen? Zitieren
Alex_winf01 Geschrieben 13. Juli 2006 Autor Geschrieben 13. Juli 2006 Also, wenn die Anwendung fertig ist, wird sie übe ein JAR-File gestartet. In diesem JAR-File liegen die .class-Dateien und natürlich die benötigten Package für POI und den Treiber für MySQL. Wenn ich jetzt POI entzippe, habe ich zwei Ordner - einmal den Ordner org (wo alle wichtigen Klassen für POI drinnliegen) und einmal den Ordner META-INF, wo die Datei MANIFEST.MF drinnliegt. Für MySQL benötige ich den mysql-connector. Wenn ich da entzippe, habe ich drei Ordner - einmal den Ordner org, den Ordner com und auch wieder den Ornder META-INF, wo auch die Datei MAINFEST.MF drinnliegt. Bei mySQL lade ich den Treiber wie folgt in meiner .java-Datei: String myDrivers = "com.mysql.jdbc.Driver" Wenn ich den Ordner com in das Verzeichnis meiner Applikation kopiere, dann läuft die Verbindung zu mySQL auch. Definitiv!! Habe ich ausprobiert. Es MUSS nur der Ordner com im selben Verzeichnis liegen. So kann ich ohne Probleme Tabellen anlegen, Daten in die Tabelle einfügen, bearbeiten und löschen. Nun habe ich gedacht, ich lege die Ordner von POI und die Ordner von mySQL in das Verzeichnis meiner Applikation. Bei POI brauche ich den Ordner org und bei mySQL brauche ich den Ordner com. Jetzt ist es so, dass ich zweimal den Ordner org habe (muss also den von POI mitnehmen und nicht den von mySQL). Ich habe gedacht, ich brauche auf jeden Fall von beiden Anwendungen den Ordner META-INF. Die brauche ich nicht? Ich kann mich noch erinnern, dass mal davon in diesem Forum die Rede war. Hier haben wir die Diskussion schon mal geführt: http://forum.fachinformatiker.de/java/94468-hsqldb-connection-problem.html Und dafür brauche in die Mainfest-Datei. In der Mainfest-Datei für mySQL steht im übrigen das drin: Manifest-Version: 1.0 Created-By: Apache Ant 1.5 Wie muss dann so eine Mainfest-Datei aussehen? Da habe ich bis jetzt keinerlei Erfahrung. Zitieren
perdian Geschrieben 13. Juli 2006 Geschrieben 13. Juli 2006 Also, wenn die Anwendung fertig ist, wird sie übe ein JAR-File gestartet.Das ist immer noch keine Antwort auf die Frage. Willst du Hilfe haben oder nicht? Wenn ja, dann beschreibe bitte genau wie die Applikation gestartet wird, inklusive Kommandozeilenaufruf. Heisst "über ein JAR File starten" nun "java -jar x.jar" oder "java -cp x.jar foo.Bar"? Bei mySQL lade ich den Treiber wie folgt in meiner .java-Datei: String myDrivers = "com.mysql.jdbc.Driver"So lädts du keinen JDBC Treiber. So weisst du den Wert "com.mysql.jdbc.Driver" dem String "myDrivers" zu - mehr auch nicht. Die brauche ich nicht? Ich kann mich noch erinnern, dass mal davon in diesem Forum die Rede war.Du benötigst in diesem Falle keine Manifest Datei. Nochmal: Informiere dich über die Grundlagen, wie ein Java Programm gestartet wird und wofür z.B. eine Manifest Datei überhaupt da ist. Hier haben wir die Diskussion schon mal geführt:Und wieso befolgst du dann nicht einfach die Tips, die dort schon gegeben worden sind?! Wie muss dann so eine Mainfest-Datei aussehen? Da habe ich bis jetzt keinerlei Erfahrung.Dann besorg dir diese Erfahrung: http://www.google.com/search?hl=de&ie=UTF-8&q=tutorial%20java%20manifest Der erste Link sieht schonmal sehr interessant aus. Zitieren
Alex_winf01 Geschrieben 14. Juli 2006 Autor Geschrieben 14. Juli 2006 Aufruf des Programms: java -jar dateiName.jar Der DAU draussen klickt selbstverständlich mit einem Doppelklick auf das JAR-File. Das geht laut JAR-File öffnen Und laut GoTo Java gehts auch so. Meine einzigste Frage: Damit die Anwendung läuft, brauche ich POI UND mySQL. Dafür muss ich den Treiber von mySQL mitliefern und das Package von POI. Genügt es, wenn ich den com-Ordner von mySQL und den org-Ordner von POI mitliefere? D. h. ich möchte in der Anwendung dann Excel-Sheets anlegen können und dort auch Daten reinschreiben können. Gleichzeitig sollen die Daten in der Datenbank abgespeichert werden. Hintergrund: In meinem Datenbank-Projekt vor einer geraumen Zeit, habe ich eine Java-Anwendung geschrieben, diese in ein JAR-File gepackt und dort auch nur den com-Ordner von mySQL mit reingepackt. Das lief. Ein externer Tester hat das Programm dann mit Doppelklick gestartet und konnte ohne Probleme Daten in die DB reinschreiben, lesen und verändern. Damals habe ich eine vorgegebene Mainfest-Datei mit ins JAR-File gelegt und brauchte mich über die CLASSPATH keine Gedanken machen. Zitieren
Alex_winf01 Geschrieben 14. Juli 2006 Autor Geschrieben 14. Juli 2006 Hab die Antwort in einem anderen Forum bekommen. Danke trotzdem. Zitieren
ksg9-sebastian Geschrieben 20. Juli 2006 Geschrieben 20. Juli 2006 Das ist unglaublich. Anstatt eine doofe Testklasse zu erzeugen wo der MySQL-Treiber geladen wird und dazu noch irgendein POI-Objekt erzeugt wird frägst du hier tagelang rum. Das wär doch wirklich nicht allzu schwer gewesen, oder? MySQL entpacken POI entpacken Testklasse erstellen JAR-File draus mache Alle Ordner bis auf META-INF in das JAR kopieren Testen Fertig Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.