Haymaker84 Geschrieben 2. Oktober 2008 Teilen Geschrieben 2. Oktober 2008 Hi, ich bin Dabei einen Workspace im JDeveloper zu bereinigen. Die Projekte haben alle ziemlich viele Libraries eingebunden, von denen keine Sau weiß, ob sie benötigt werden. Ich mach das so, dass ich eine Library lösche und dann guck, ob compile noch funtzt. Jetzt meinte ein Kollege, dass trotzdem probleme zur Laufzeit auftauchen könnten. Kann das theoretisch möglich sein?! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Haymaker84 Geschrieben 2. Oktober 2008 Autor Teilen Geschrieben 2. Oktober 2008 Update: ich habe gerade die Library "ORACLE_JDBC" entfernt. Zu meiner Verwunderung konnte ich das ohne Probleme kompilieren. Zur Laufzeit hab ich dann natürlich keine DB-Verbindung bekommen. Jetzt frage ich mich, wie das sein kann... Anscheinend werden Bestandteile der Library in unserem normalen Code verwendet. (sonst würds ja kein Stacktrace geben...) Aber wieso lässt sich dann das ganze Paket überhaupt erst kompilieren? Der Umstand stellt die Arbeit des bisherigen Tages in Frage! Gibt es eine bessere Methode, bei den Libraries aufzuräumen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigredeyes Geschrieben 2. Oktober 2008 Teilen Geschrieben 2. Oktober 2008 wieso kompilerts? tja, da bist du in den class.forName("klasse_als_string"); siehe hier reingetappt. wenn der classloader dann sucht kommt wahrscheinlich eine classNotFoundException. das ist eine stolperfalle. eine andere könnte z.b. reflection sein. durchsuche den code nach reflection und eben class.forname(). aber ob das dann alles ist, kann ich dir auch nicht sagen... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kein-tee Geschrieben 2. Oktober 2008 Teilen Geschrieben 2. Oktober 2008 Jetzt meinte ein Kollege, dass trotzdem probleme zur Laufzeit auftauchen könnten. Kann das theoretisch möglich sein?! Sicherlich. Stichwort: Reflections. Der Classpath lässt sich u.a. auch dynamisch erweitern. Aber wieso lässt sich dann das ganze Paket überhaupt erst kompilieren? Reflections. Der Treiber wird zur Laufzeit geladen. Beispiel: Class.forName(" oracle.jdbc.driver.OracleDriver"); Der Compiler merkt hiervon erst mal nichts. Zur Laufzeit hast du natürlich das nachsehen, wenn die entsprechende Bibliothek fehlt. Gibt es eine bessere Methode, bei den Libraries aufzuräumen? Gute Frage, vielleicht Maven, wenn man sich das mal durchliest. Wüsste ich aber auch gerne! Gruß Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schiller256 Geschrieben 2. Oktober 2008 Teilen Geschrieben 2. Oktober 2008 Also das löschen und anschließende Kompilieren der Software ist sicherlich nicht der Richtige Weg um heraus zu finden welche Bibliotheken du brauchst. Denn du bist ja inzwischen lebst schon drauf gekommen das klassen erst zu Laufzeit geladen werden. Hinzu kommt das Bibliotheken auch selbst wieder Abhängigkeiten untereinander haben können. Dir wird wohl initial nichts anderes übrig bleiben als in Dokumentationen nach zu lesen welche Bibliothek welche Abhängigkeiten haben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Haymaker84 Geschrieben 6. Oktober 2008 Autor Teilen Geschrieben 6. Oktober 2008 :upps Ach ja, an den Kram hatte ich nicht gedacht... Da lässt sich wohl nicht mehr viel machen. Die Anwendung wurd vor ewigkeiten mit der heißen Nadel gestrickt und ist dementsprechend unübersichtlich und Dokumentationsfrei. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.