Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Library - Abhängigkeiten testen...?

Empfohlene Antworten

Veröffentlicht

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?!

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?

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...

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ß

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.

: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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.