# jar datei dekopilieren und code ersetzen?



## Transmitter (1. April 2003)

hi!

ich hab mal ne frage:

ich habe eine fast 2mb große *.jar datei .. 

wenn ich die mit meinem jbuilder öffnen will, bekomme ich noch weitere "subdirectories" oder packages oder was auch immer "in" dieser jar angezeigt .. 

da gibts eine *.java datei die ich gerne durch eine vorhandene ersetzen möchte .. wie kann ich dass denn machen?

weil wirklich öffnen kann ich die *.jar nicht, ich komme nur bis zu dem öffnen dialog 

in der help steht nur was von "create native executable files" .. und da ist jar erklärt, aber nicht wie ich jetzt vorgehen sollte 

kann mir da jemand helfen?

thx schon mal
cu - transmitter


----------



## Christian Fein (1. April 2003)

Jar ist nichts anderes 
als Zip.

Du kannst diese mit dem 
programm jar entpacken.

Dazu gehst du auf die konsole und startest
%JAVA_HOME%\bin\jar.exe


```
Syntax: jar {ctxu}[vfm0M] [JAR-Datei] [Manifest-Datei] [-C dir] Dateien ...
Optionen:
    -c  neues Archiv erstellen
    -t  Inhaltsverzeichnis f³r Archiv auflisten
    -x  benannte (oder alle) Dateien aus dem Archiv extrahieren
    -u  vorhandenes Archiv aktualisieren
    -v  ausf³hrliche Ausgabe f³r Standardausgabe generieren
    -f  Namen der Archivdatei angeben
    -m  Manifestinformationen aus angegebener Manifest-Datei einbeziehen
    -0  nur speichern; keine ZIP-Komprimierung verwenden
    -M  keine Manifest-Datei f³r die Eintrõge erstellen
    -i  Indexinformationen f³r die angegebenen JAR-Dateien generieren
    -C  ins angegebene Verzeichnis wechseln und folgende Datei einbeziehen
Falls eine Datei ein Verzeichnis ist, wird sie rekursiv verarbeitet.
Der Name der Manifest-Datei und der Name der Archivdatei m³ssen
in der gleichen Reihenfolge wie die Flags ''m'' und ''f'' angegeben werden.
```

Entpackste das jar änderst dein java file compilierst das  file und ersetzt das class file. 
Und packste wieder ins jar


----------



## Transmitter (1. April 2003)

ich habe die dateien jetzt erst entpackt, und die *.java in das passende verzeichnis kopiert.

wenn ich die zu einer *.class datei kompilieren will, bekomme ich aber nur fehlerausgaben vom compiler ... 

wohl wegen irgendwelchen abhängigkeiten 

weißt du da weiter?


----------



## Christian Fein (1. April 2003)

Naja musst den Classpath anpassen, 
Welches jar willst du denn wie ändern?


----------



## Transmitter (1. April 2003)

ich möchte von hier:

http://argouml.tigris.org/servlets/ProjectDocumentList

die 

http://argouml.tigris.org/files/documents/4/1088/ArgoUML-0.12.zip

die argouml.jar entpacken, und darein soll die GeneratorPHP.java von:
http://argouml.tigris.org/source/br...ouml/language/php/generator/GeneratorPHP.java

also die datei:
http://argouml.tigris.org/unbranded...uage/php/generator/GeneratorPHP.java?rev=1.14

und die kann ich irgendwie nicht kompilieren


----------



## Christian Fein (1. April 2003)

Sind deine java Klassen im Classpath?


----------



## Transmitter (1. April 2003)

wo wird der denn angegeben?

aber die *.java ist im richtigen pfad, ja .. 

weiß aber nicht in welchen *.class was drinne steht von dem pfad zu der GeneratorPHP

oder was meinst du jetzt?


----------



## Christian Fein (1. April 2003)

> _Original geschrieben von Transmitter _
> *wo wird der denn angegeben?
> 
> aber die *.java ist im richtigen pfad, ja ..
> ...



Nun der Classpath ist eine Umgebungsvariable von Windows bzw Linux und wird gesetzt:

windows:
set CLASSPATH=%CLASSPATH%;[pfad zum projekt]

linux:
export CLASSPATH=$CLASSPATH:[pfad zum projekt]

Du solltest die Packete beachten sprich den Classpath auf den root des Projektes setzen.
mehr zum Kompilieren und Classpath:

http://www.java-tutor.com/

und 

http://www.javabuch.de/


bzw:
http://www.galileocomputing.de/openbook/javainsel2/java_250000.htm


----------



## Transmitter (1. April 2003)

nö, irgendwie klappt das ganz und gar nicht 

ich kann entweder den classpath als systemvar setzen auf 
c:\argouml
oder bei kompilieren mit angeben .. 

auch wenn ich als javac -classpath argouml.jar kompiliere bekomme ich immer den gleichen fehler:

Exeption in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/javac/Main

 ich verzweifel hierdran noch 

wo muss denn die zu kompilierende *.java datei liegen?

ich habs im root dir von argouml probiert, und auch in dem subdir von argouml, wo die hin soll.

woran kanns denn jetzt noch liegen?


----------



## Christian Fein (1. April 2003)

> _Original geschrieben von Transmitter _
> *nö, irgendwie klappt das ganz und gar nicht
> 
> ich kann entweder den classpath als systemvar setzen auf
> ...



Gegenfrage:
Kannst du Java Programmieren?


----------



## Transmitter (1. April 2003)

naja .. hält sich in grenzen .. 

bin im 3. sem informatik studium und da fangen wir gerade mit java an.

c / c++ und noch ein paar andere kann ich recht gut.

aber es sollte ja kein thema sein, sowas zu kompilieren!

sowas wie classpath muss ich halt nur kurz lesen, dann versteh ich das meist .. also sollte ich damit auch nicht so große probleme haben wie ich sie im moment habe!


----------

