Änderung in .jar bzw. .class vornehmen ?

F

Fragesteller

Gast
Hallo,

ich möchte einen Wert einer .class Datei in einem .jar Archiv abändern.
Ist soetwas ohne großen Aufwand möglich ?

Gruß
 
M

mcnanuk

Gast
Du kannst meines Wissens nach keine Datei innerhalb eines Jars manipulieren, ohne dieses zu entpacken, dann die Änderung vorzunehmen, und es wieder zu verpacken.

Was ist an der Frage unkonkret. Es ging doch mehr um die generelle Frage ob sowas geht oder nicht. Ob man sich den Aufwand macht oder nicht, bleibt ihm dann selbst überlassen ...
 
M

maki

Gast
"Unkonret" bzw. nicht näher bestimmt ist der Begriff "ohne großen Aufwand", "unkonkret" ist auch, ob die jar zu dem Zeitpunkt ausgeführt wird.
 

ARadauer

Top Contributor
gehen tut es. leicht ist es nicht...
bester fall, sourcen sind im jar vorhanden, ändern neu compilieren...
schlechter fall, class files müssen decompiliert werden und wieder compiliert werden, das kann bei einfachen sachen, theoretisch einfach sein, könnte aber auch sein, dass du keine chance hast...

decompilieren... JAD

Als Anfänger... wahrscheinlich zu schwer...
 
F

Fragesteller

Gast
Danke erst einmal für eure Antworten.

Sorry, wenns etwas global ausgedrückt wurde.

Die .jar hat ungefähr 300 Klassen.
Mit "ohne großen Aufwand" mein ich jetzt wirklich, dass nur diese eine .class geändert werden könnte.

Aber anscheind ist das wirklich nicht möglich, ohne alle Klassen zu decompilieren und neu zu compilieren. (wegen den Abhängigkeiten)

Gibts keine Möglichkeit dem Compiler zu sagen, dass er mit Errors compilieren soll ?! :)
 

Murray

Top Contributor
Die Abhängigkeiten zu den anderen Klassen im Jar dürften kein Problem sein, da man dem Compiler ja das Jar-File im Classpath vorgeben kann - dann findet er die abhängigen Klassen, ohne sie selbst übersetzen zu müssen.
Hast Du denn den Quelltext der zu ändernden Klasse?
 
F

Fragesteller

Gast
@ XHelp: Eine Ausgabe: Meinetwegen System.out.println("Hallo Welt"); in System.out.println("Hallo Welt 2");

praktisch den String ergänzen.

@ Murray: Den Quelltext hab ich, ja. Hab mir die entsprechende .class ja aus dem .jar rauskopiert und mit DJ Java Decompiler eine .java erstellt.

Kannst du mir vielleicht auch noch sagen, wie nun die Befehlszeile für den Compiler ist, damit er die Abhängigkeiten findet?

Ausgangssituation:
Ich habe auf C:\Java\ meine java.jar und daneben die HalloWelt.java (die ich nun geändert habe)
 

XHelp

Top Contributor
Wenn es wirklich nur darum geht ein String zu ändern, dann kannst du es einfach mit nem Hexeditor versuchen. Du solltest aber auch die Längenangaben dementsprechend anpassen
 
F

Fragesteller

Gast
@ XHelp: das nur im äußersten Nofall. Weil ich davon eigentlich kaum Ahnung hab :D

@ Murray: Also meckern tut er nicht, aber geupdatet wird die .class im .jar auch nicht.
Ich hab die .class auch mal testweise aus der .jar entfernt.
Danach nochmal dein Befehl ausgeführt (ohne Fehler) und nochmal in die .jar reingeguckt.
Die .class fehlt jedoch ?!
 

XHelp

Top Contributor
Mit dem Befehl ersetz du ja auch nicht irgendwie irgendwo eine .class in irgendeiner jar, sondern kompilierst die angegebene .java Datei. Da sollte dann eine HalloWelt.class erstellt werden
 
F

Fragesteller

Gast
Entschuldigung, ja.
Ich war wieder zu voreilig :D

Hätte erstmal gucken sollen.

Haut jedenfalls so erstmal hin, danke.

Allerdings verwurstet mir der DJ die .class ziemlich. Also er ändert einfach irgendwelche Sachen und schiebt den Quelltext auch bissel hin und her.
Kann man das noch irgendwie unterbinden ?
Oder gibts vielleicht eine Alternative zum DJ ?
 

Murray

Top Contributor
DJ Java Decompiler ist doch nur ein GUI-Aufsatz für JAD, oder? Und JAD ist nicht mehr so ganz aktuell.

Vielleicht ist JD | Java Decompiler ja eine Alternative.

Trotzdem kann i.A. kein Decompiler den kompletten Sourcecode mit Kommentaren, Formatierungen und allen Variablen- und Parameternamen wiederherstellen, weil diese Informationen im Bytecode schlichtweg nicht mehr vorhanden sind.
 
F

Fragesteller

Gast
Danke.

Recht lustig. Beide Decompiler machen aus ein und der selber .class 2 komplett unterschiedliche .java Files.

Da glaub da muss ich jetzt rumspielen.
Threadthema sollte denk ich aber schon erledigt sein.

Danke @ all.
 
F

Fragesteller

Gast
ich werds wohl nicht so schnell/leicht compiliert bekommen.

Wie du schon sagtest, kann nicht der komplette Source wiederhergestellt werden.
d.h für mich, ich hab eigentlich schon verloren, weil ich ja nicht weiß wie es richtig im Source auszusehen hat.

Und ich bezweifel, dass ich anhand der Errors das Ding wie das Orignal herstellen kann.
 

Murray

Top Contributor
Ein Decompiler muss aber in der Lage sein, den Code so zu rekonstruieren, dass das Ergebnis insofern äquivalent zum ursprünglichen Sourcecode ist, als dass sich a) dieser übersetzen lässt und b) das daraus entstehende Kompilat der ursprünglichen Klassen entspricht.

Was kommen beim Übersetzen denn für Fehler?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Wo müsste ich im Code eine Änderung vornehmen? Allgemeine Java-Themen 6
H Änderung im maximalen heap space unter Windows 7 ?! Allgemeine Java-Themen 5
O Fragen über Fragen - Bei Änderung XML-Datei -> Anpassung GUI Allgemeine Java-Themen 7
S Änderung in einer Datei Allgemeine Java-Themen 7
G Input/Output Manuelle Änderung von Wert in Swing Komponente bemerken! Allgemeine Java-Themen 2
Iron Monkey JNLP nach Änderung automatisch aktualisieren Allgemeine Java-Themen 18
G Änderung eines primitiven Datentyps löst Fehler aus Allgemeine Java-Themen 7
N Änderung des Objektnamens Allgemeine Java-Themen 3
M jdesktop binding: jTable update nach Änderung... Allgemeine Java-Themen 3
M MVC - Info an Änderung des Models Allgemeine Java-Themen 8
T Eingebettes Objekt über Änderung d. äußeren Obj. informieren Allgemeine Java-Themen 4
J Nach SOAP Protokollierungen Änderung vornehmbar? Allgemeine Java-Themen 2
S Änderung an Proberties datei an alle User weitergeben? Allgemeine Java-Themen 7
E Listener für Änderung der Fenstergröße Allgemeine Java-Themen 3
W Listener an ein beliebiges Objekt hänger, der mir Änderung Allgemeine Java-Themen 8
D NoClassDefFoundError: Could not initialize class Allgemeine Java-Themen 0
J Class to link Java Allgemeine Java-Themen 4
C Was passt hier nicht bei der Calendar-Class Allgemeine Java-Themen 2
E Class.getResourceAsStream() gibt null zurück Allgemeine Java-Themen 2
Erwin82a Object cannot be converted to Custom Class in Lampda Expression Allgemeine Java-Themen 2
T Java Robot Class - Bot Allgemeine Java-Themen 3
S Class File Editor -> Source not found Allgemeine Java-Themen 4
G javafx "class path" exception Allgemeine Java-Themen 5
S Java class direved from inner class Allgemeine Java-Themen 6
S Inner Class Allgemeine Java-Themen 11
K Wildcard und class type Allgemeine Java-Themen 9
M Java model class ? Allgemeine Java-Themen 9
Thallius Ist meine static Helper Class Thread save? Allgemeine Java-Themen 9
S class path resource [config.properties}] cannot be opened because it does not exist Allgemeine Java-Themen 4
J Reflection Aufruf: .class durch .dll ersetzen Allgemeine Java-Themen 4
T Compiler-Fehler NoClassDefFoundError beim Laden einer Class Allgemeine Java-Themen 11
J Class Decompile als String (Procyon) Allgemeine Java-Themen 2
H Class 'java.io.BuferedReader' is not present in JRE Emulation Libary | GWT Fehler?! Allgemeine Java-Themen 0
I Datentypen String in class sicher verwahren Allgemeine Java-Themen 17
R Dynimc Class Loading Allgemeine Java-Themen 5
J Inner class + Leer-Konstruktor Allgemeine Java-Themen 1
Neumi5694 Methoden Generic: Rückgabetyp als Class-Parameter übergeben Allgemeine Java-Themen 3
D Collections.sort funktioniert nicht in exportierten .class Dateien Allgemeine Java-Themen 10
V Eclipse .class Dateien Allgemeine Java-Themen 9
KeexZDeveoper Von .class zu .java Allgemeine Java-Themen 7
N Wo ist Object.class ? Allgemeine Java-Themen 0
K Nicht alle class-Dateien im JRE? Allgemeine Java-Themen 2
M *.class Files ausführen Allgemeine Java-Themen 2
L Klassen Nested Class In Nested Class Allgemeine Java-Themen 3
perlenfischer1984 Dialect class not found exception Allgemeine Java-Themen 15
Tort-E Manifest Main-Class Allgemeine Java-Themen 8
I JSoup Class auslesen Allgemeine Java-Themen 1
K Generic class und Reflection Allgemeine Java-Themen 2
R .class Datei in .jar austauschen Allgemeine Java-Themen 2
R Java .class-File-Konstrunkt mit Programm visualisieren Allgemeine Java-Themen 18
A main-class Not found Allgemeine Java-Themen 3
T Java Class Intrumentation mit Annotations in Laufzeit Allgemeine Java-Themen 1
N Per Reflection auf (method) local inner class zugreifen? Allgemeine Java-Themen 3
P JDK installieren Error: Could not find or load main class HelloWorld.java Allgemeine Java-Themen 3
B public class JarFilter extends FileFilter « Falsch? Allgemeine Java-Themen 4
D Object nach Vererbung mit Class Object überprüfen Allgemeine Java-Themen 4
T Hash von *.class-Datein überprüfen Allgemeine Java-Themen 1
F java.lang.ClassNotFoundException: .class Allgemeine Java-Themen 5
T InvalidClassException - Read null attempting to read class descriptor for object Allgemeine Java-Themen 8
Phash Can't find Main Class Allgemeine Java-Themen 4
B Erste Schritte Plugin erkennen und Class Dateien anzeigen lassen Allgemeine Java-Themen 3
B json zu java class Allgemeine Java-Themen 2
antonbracke Aus Jar eine Class laden und damit arbeiten! Allgemeine Java-Themen 5
D Class<CAP#1> statt Class<...> Allgemeine Java-Themen 5
T Class-Objekt mit URLClassloader Allgemeine Java-Themen 7
A Class Datei aus Verzeichnis über URLClassLoader laden Allgemeine Java-Themen 2
L Class Files , Methode .delete() Allgemeine Java-Themen 13
E NetBeans warning: [options] bootstrap class path not set in conjunction with -source 1.6 Allgemeine Java-Themen 4
X Could not find the main class programm will exit (textdokument) Allgemeine Java-Themen 3
S Could not find the main class Allgemeine Java-Themen 7
B Mal wieder "Could not find the main class" Allgemeine Java-Themen 3
B Variable class in java.lang.Object Allgemeine Java-Themen 11
C Could not find the main class. Allgemeine Java-Themen 15
S Klassen .jar - eine .class datei ändern? Allgemeine Java-Themen 23
A Could not find main class: start Allgemeine Java-Themen 5
S main() class finden Allgemeine Java-Themen 7
hdi Could not find main class? Allgemeine Java-Themen 8
R Warum Class.forName(); Allgemeine Java-Themen 7
C class.class angefordert ? Allgemeine Java-Themen 2
S Methoden Class.forName() >> Methoden - Reihenfolge Allgemeine Java-Themen 5
B Test$1.class mit dem javac compiler Allgemeine Java-Themen 7
G jar Datei findet Main Class nicht... Allgemeine Java-Themen 2
P Java Editor Could not find the main class GUI. Programm will exit. Allgemeine Java-Themen 3
D class Datei einlesen Allgemeine Java-Themen 4
T Interface > Abstract > Class Allgemeine Java-Themen 11
TheDarkRose Subversion .class Dateien auch commiten? Allgemeine Java-Themen 3
D API - Beispiel + static member in inner (non static) class Allgemeine Java-Themen 2
E String name in class convertieren Allgemeine Java-Themen 4
H2SO3- bestimmte class immer mit 1.4 compilieren Allgemeine Java-Themen 5
B class dateien "einlesen" und objekte erzeugen Allgemeine Java-Themen 6
G Unterschied MyClass.class vs this Allgemeine Java-Themen 2
S mit Class eine Klasse nur einmal instantiieren Allgemeine Java-Themen 4
Sonecc Zugriff auf Class File einer anderen Jar während der Laufzeit Allgemeine Java-Themen 2
M Klasse aus xyz.class Datei laden / package entfernen? Allgemeine Java-Themen 4
BattleMaster246 Could not find the Main class Allgemeine Java-Themen 30
N class Task extends TimerTask ohne Blockieren Allgemeine Java-Themen 15
H .class in .java umwandeln Allgemeine Java-Themen 3
T class.newinstance + try/catch-konstruktor Allgemeine Java-Themen 6
X Cannot refer to a non-final variable settings inside an inner class defined in a different method Allgemeine Java-Themen 4
J Class.forName und CLASSPATH -Problem Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben