Standard Klassen "überlagern"

Status
Nicht offen für weitere Antworten.

heinzepreller

Mitglied
Hi,

in unseren Java Projekten werden leider immer wieder wenns hart auf hart kommt Klassen aus Bibliotheken "überlagert" (und nein ich meine keine Ableitungen).

D.h. man bastelt sich eine neue Klasse mit der gleichen Signatur wie die die man modifizieren will (gleicher Name und package Pfad) und veranlasst sie außerdem dass sie vor allen anderen Klassen und jars geladen wird.

Und nun kann man nach Herzenslust darin rummurksen weil die Murks Klasse ja die aus der Bibliothek überlagert.

Diese "Technik" hat leider X Haken wie sich jeder Denken kann und die Anzahl dieser "Überschattungen" erhöht sich ständig.

Mein großes Problem ist wie kann ich diese bösen Klassen ausfindig machen. Ich weiß leider nicht mal obs für diese Art von Bananencode Hack eine offizielle Bezeichnung gibt.

Was besseres als Überschattung oder Überlagerung ist bislang noch niemandem eingefallen.

Kennt jemand den Begriff dafür und/oder ein Tool/Bibliothek mit der man sowas aufspüren kann ?

bin für jede Hilfe dankbar

heinzepreller
 
G

Gast

Gast
man kann java "bescheissen", indem man den voll qualifizierten namen einer klasse so hindreht, dass sie in denselben namensraum externen klassen eingebunden wird. so kann man z.b. auf protected / package scope methoden von klassen aus externen libraries zugreifen. das ganze ist aber wirklich ein unglaublich ekliger hack und soweit mir bekannt, gibt es auch keine möglichkeit, das ganze zur laufzeit zu unterbinden.
 

heinzepreller

Mitglied
Hallo,

ich weiß sehr wohl was handelsübliches überlagern bzw. überschreiben ist und habe weder das eine noch das andere gemeint, da ich aber den Begriff für das was ich suche ja nicht kenne, musste ich es so umschreiben.

Ich weiß auch das diese Vorgehensweise unterste Schublade und ganz übler Stil ist aber was will mann machen es taucht halt immer wieder auf.

Ein Beispiel:

Ich habe eine beliebiege Java Applikation mit beliebiger package Struktur.

In meinem Projekt verwende ich z.B. die Xalan Bibliothek.

Sagen wir mal es wäre für mich von Bedeutung das XString aus Xalan bei der length() Methode immer "0" liefert, ich aber ansosnten die volle Funktionalität der Xalan Bibliothek nutzen kann ohne 20 Klassen abzuleiten und 10 Interfaces implementieren zu müssen.

Nun lege ich die Klasse XString im package org.apache.xpath.objects an.

Diese existiert in genau diesem package auch in der Xalan Bibliothek.

Also hol ich mir die Xalan Sourcen und bastel bei der length Methode (nehmen wir an die gitbs dort im Klartext) einfach "return 0;" hin fertig.

Beim bauen meiner Anwendung pass ich noch auf dass das jar meiner Anwenung im Classpath des Manifest vor dem xalan.jar landet und fertig. Fortan wenn meine Anwendung XString aus Xalan verwendet wird meine verpfuschte 'Xstring' Klasse benutzt.

Ich hoffe jetzt ist ein wenig klarer was ich meine.

Und mir gehts auch nicht darum diese Vorgehensweise zur Laufzeit zu unterbinden ich hätte nur gern ein Mittel/Werkzeug diese Klassen zu finden oder wüsste wenigstens ganz gerne den Namen für diesen "Beschiss".
 

Wildcard

Top Contributor
heinzepreller hat gesagt.:
in unseren Java Projekten werden leider immer wieder wenns hart auf hart kommt Klassen aus Bibliotheken "überlagert" (und nein ich meine keine Ableitungen).
Von euren eigenen Java Entwicklern? Warum? Was soll das denn? ???:L
Einen Namen kann ich dir leider auch nicht nennen, aber ich kann dir als Gegenmaßnahme OSGi empfehlen.
Da OSGi Bundles ihren eigenen Classloader Context bekommen, kann man sich nicht so einfach dazwischen setzen.
 

heinzepreller

Mitglied
Warum, kann ich dir schon sagen...

Es 10 mal bequemer einfach mal schnell auf diese Art Funktionalität zu ändern, als eine Handvoll Interfaces zu implementieren und sich einen Pfad an Abhängigkeiten entlangzuhangeln (die leider meistens auch nicht ganz klar sind).

Rein nach dem Motto: nach mir die Sintflut.

Dass man sich die Probleme damit zwar nur in die Zukunft verlagert will niemand wissen.
 

heinzepreller

Mitglied
Ich weiß...

Aber was willst du machen wenn diese Vorgehensweise leider teilweise von den Projektleitern als legitime Technik angesehen wird.

Und damit unsere QS wirklich darauf aufmerksam wird bräuchten wir ein Tool um diese Stellen ausfindig zu machen.
 

Wildcard

Top Contributor
Wie sieht's damit aus:
Schreib doch selbst ein Tool, das eure Projekte auscheckt und jede Klasse rausschreibt die nicht in eurem Namespace com.heinzeprellers.company liegt.
 

FArt

Top Contributor
Es gibt Situationen, da ist es nötig, Ressourcen auszutauschen bzw. zu überlagern. Dafür gibt es sogar einen Standard. Wenn man sich daran hält, muss man auch nicht lange suchen, weil alle diese Ressourcen in besitmmten JARs und diese in bestimmten Verzeichnissen liegen.

Java Endorsed Standards Override Mechanism

Trotzdem: das Verfahren ist eine Notlösung und kein Normalbetrieb. Wenn ihr das so in der Regel betreitbt, braucht ihr euch um Qualität wirklich keine Sorgen mehr zu machen... sie ist schlichtweg nicht vorhanden.
 

heinzepreller

Mitglied
@ FArt

danke, danke, danke endlich kenn ich den Namen des Teufels.. :lol:

@ Wildcard

Das mit dem selber Tool schreiben möchte ich wenns gar nicht anders geht eigentlich immer vermeiden, jede Tool das nicht von einem selber ist muss man auch nicht warten. Deshalb hab ich auch hier gepostet..., aber trotzdem danke.
 

Wildcard

Top Contributor
heinzepreller hat gesagt.:
@ FArt

danke, danke, danke endlich kenn ich den Namen des Teufels.. :lol:
Naja, nicht ganz. Endorsed Override ist es ja nur wenn du was nach /lib/endorsed (weiche Satan) packst und das hat auch nur Einfluss auf die 'endorsed packages'.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Warum wird mir in der Konsole das "Standard Array" ausgegeben? Allgemeine Java-Themen 2
O Standard library nativer C code Allgemeine Java-Themen 1
R Locale für Türkei nicht in standard -java ? Allgemeine Java-Themen 1
M Classpath Standard Klasse überschreiben Allgemeine Java-Themen 2
J Standard-I´/O kopieren Allgemeine Java-Themen 5
H Standard Windows-Druck-Dialog Allgemeine Java-Themen 2
foobar Email mit Standard Mailclient versenden Allgemeine Java-Themen 12
S Filesystem Hierarchy Standard Allgemeine Java-Themen 2
A Strings joinen, Standard-Library? Allgemeine Java-Themen 9
T Standard LAF austauschen Allgemeine Java-Themen 3
S Microsoft Standard Compiler Allgemeine Java-Themen 19
S Standard-Bildbetrachtungsprogramm starten? Allgemeine Java-Themen 7
G Standard-Browser herausfinden Allgemeine Java-Themen 4
W Kleines Applet in Standard Java Applikation umwandeln Allgemeine Java-Themen 3
G Standard-Drucker mit Java setzen Allgemeine Java-Themen 4
D Die Versionen Standard, Enterprise und Micro Allgemeine Java-Themen 3
G JRE 1.5.0-rc nicht als Standard-JRE verwenden Allgemeine Java-Themen 6
S standard-email-programm öffnen Allgemeine Java-Themen 4
O standard text editor starten Allgemeine Java-Themen 7
I Mehrere Klassen mit den selben Daten Allgemeine Java-Themen 5
Zrebna Wie ermittelt man alle testbaren (zu testenden) Klassen in seinem Maven-Projekt? Allgemeine Java-Themen 23
8u3631984 Jacoco Testcoverage bei Abstracten Klassen in verschachtelten Modulen Allgemeine Java-Themen 6
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
B Ein Objekt einer Klasse mehreren anderen Klassen zur Verfügung stellen? Allgemeine Java-Themen 6
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
P9cman java.Lang Klassen fehlen in JRE System Library Allgemeine Java-Themen 1
B Wie kann ich mein 8 Klassen Gebilde objektorientierter schreiben? Allgemeine Java-Themen 114
N abstracte klassen methoden Allgemeine Java-Themen 32
W Klassen Zugriff auf ein Textfile aus allen Klassen. Allgemeine Java-Themen 2
M Klasse durch Klassen Aufteilung verbessern, aber wo? Allgemeine Java-Themen 1
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
M Kann man Annotationen auf Klassen einschränken die ein Interface implementieren? Allgemeine Java-Themen 1
nonickatall Methoden Kann man Klassen/Methoden aus Variablen heraus aufrufen? Allgemeine Java-Themen 6
H Interface PluginSystem ClassNotFound exception für library Klassen Allgemeine Java-Themen 10
L Classpath Zur Laufzeit bestimmte Klassen in Classloader hinzufügen? Allgemeine Java-Themen 4
P Abstrakte Klassen vs. Interface Allgemeine Java-Themen 4
I Klassen aus Jar-Dateien aus anderem Ordner laden Allgemeine Java-Themen 3
D OOP Gemeinsamen ID-Raum für zwei Klassen implementieren Allgemeine Java-Themen 7
B Problem mit meinen Klassen Allgemeine Java-Themen 6
I Array Parameter mit 2 Klassen - NullPointerException Allgemeine Java-Themen 3
F ArrayList`s in Klassen mit Getter/Setter Allgemeine Java-Themen 8
F Code in Klassen bringen Allgemeine Java-Themen 4
J Problem beim Generischen Klassen und Interfaces Allgemeine Java-Themen 2
F Klassen Verwendung abstrakter Klassen Allgemeine Java-Themen 9
W Variablenübergabe über mehrere Klassen Allgemeine Java-Themen 4
B Vererbung Interface und implementierende Klassen Allgemeine Java-Themen 8
D Klassen JLabels in anderen Klassen verwenden. Allgemeine Java-Themen 7
H Klassen LibGDX - Verschiedene Klassen als Value in einer Map Allgemeine Java-Themen 8
J Best Practice Objekt an alle Klassen verteilen ( Discord Bot ) Allgemeine Java-Themen 7
A Anonyme Klassen - Interface Allgemeine Java-Themen 5
ReinerCoder auf Klassen innerhalb eines package zugreifen Allgemeine Java-Themen 22
J Tetris Probleme bei Klassen Allgemeine Java-Themen 14
cool_brivk24 Klassen Klassen Aufruf Fehlgeschlagen Allgemeine Java-Themen 14
S Parametrisierte jUnit 5-Tests mit eigenen Datentypen/Klassen-Objekten als Test-Parameter Allgemeine Java-Themen 0
rentasad Design-Frage - Interfaces, Klassen, statische Methoden Allgemeine Java-Themen 3
S Klassen Abstrakte Klassen Allgemeine Java-Themen 5
T Log4J - Deaktivierung für einzelne Klassen Allgemeine Java-Themen 7
Tommy Nightmare Klassen Globale Klassen erstellen Allgemeine Java-Themen 7
X Klassen aus jar in jar Laden Allgemeine Java-Themen 1
S Klassen Klassen "virtuell" erstellen Allgemeine Java-Themen 5
J Aus mehreren Klassen ein Datei ausführbare machen Allgemeine Java-Themen 6
S equals-Methode bestimmer Klassen abfangen Allgemeine Java-Themen 2
M Klassen Eine Klasse in mehreren Klassen einbinden Allgemeine Java-Themen 11
Sin137 Struktur der Klassen & Package Allgemeine Java-Themen 2
G Klassen und interne Klassen Allgemeine Java-Themen 1
S Klassen übergeben Allgemeine Java-Themen 13
C Klassen und Konstruktor Allgemeine Java-Themen 2
S Classpath Wie kann ich Java-Library Klassen "verstecken"..? Allgemeine Java-Themen 4
A Java speech - 2 Klassen Allgemeine Java-Themen 1
V Wie kann ich die Fragen mit den anderen Klassen verbinden? Allgemeine Java-Themen 1
T Schlüsselworte mehrere public-Klassen in einem Paket Allgemeine Java-Themen 7
V Klassenname von allen Klassen mit einer bestimmten Eigenschaft bekommen Allgemeine Java-Themen 2
B Classpath Eclipse findet importierte Klassen nicht Allgemeine Java-Themen 1
C DBConnection als Methode in mehreren Klassen Allgemeine Java-Themen 4
C Arten von Klassen Allgemeine Java-Themen 3
7 Verbinden von Mehreren Klassen Allgemeine Java-Themen 29
A Klassen ein Interface aufzwingen Allgemeine Java-Themen 4
O Java-Obfuscator, welcher einzelne Methoden, Klassen und Ordnerstrukturen ausnehmen kann. Allgemeine Java-Themen 1
A also definition von klassen und string methoden und algorithmik Allgemeine Java-Themen 13
D Problem bei Vererbung abstrakter Klassen Allgemeine Java-Themen 6
M Interface Generische Klassen mit mehreren Typen überschreiben Allgemeine Java-Themen 0
L OOP Klassen-Design (static oder nicht?) Allgemeine Java-Themen 3
X Eigene Annotation - mit Bedingung für ganze Klassen oder Methoden Allgemeine Java-Themen 2
O Klassen Programm in Klassen unterteilt, werte werden nicht mehr übernommen Allgemeine Java-Themen 3
J C++ Projekt (QT) in Java mit Klassen (nicht imperativ) nutzen (BridJ? JavaCPP? SWIG? JNA? JNI?) Allgemeine Java-Themen 2
T Datentypen Eine Liste - verschiedenen Klassen - eine Abstracte Klasse Allgemeine Java-Themen 3
S .jar hat nicht alle Klassen ??? Allgemeine Java-Themen 10
S Polymorphie Polymorphismus bei Abstrakten Klassen Allgemeine Java-Themen 2
S Tool um mehrere Klassen in einer Klasse vereinen? Allgemeine Java-Themen 6
T Wie kann ich alle existierenden Java-Klassen anzeigen lassen? Allgemeine Java-Themen 10
Landei Welche Klassen fehlen im JDK? Allgemeine Java-Themen 18
S Kapselung Statische Helper Klassen Allgemeine Java-Themen 5
A Vererbung Klassen-Downcasting wirft ClassCastException Allgemeine Java-Themen 2
N Java Klassen mit ID Allgemeine Java-Themen 21
antonbracke Klassen Klassen gegenseitig laden Allgemeine Java-Themen 4
R SecurityManager für einzelne Klassen/Threads? Allgemeine Java-Themen 38
T Java Klassen aus externer .jar laden und ausführen Allgemeine Java-Themen 3
S JPA und Entity-Klassen: Wert ungültig Allgemeine Java-Themen 6
M OO / Klassen / Projektstruktur Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben