Veröffentlicht 2. Oktober 200816 j 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?!
2. Oktober 200816 j 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?
2. Oktober 200816 j 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...
2. Oktober 200816 j 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ß
2. Oktober 200816 j 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.
6. Oktober 200816 j :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.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.