jar erzeugt jar?

darkeye2

Bekanntes Mitglied
Hallo, ich habe einen jar file, mit einigen klassen, davon ein paar sehr kleine für bestimmte handlungen. Nun soll das programm bei überhabe eines befehls passende klassen raussuchen und eine klasse schreiben, die diese für die geforderte funktion verbindet. Das schreiben dieses codes funktioniert auch (halt als String erstmal) ...

Nun zu meiner frage, wie kann ich mit einem selbstgeschriebenen programm dafür sorgen, dass:
1.) ein textfile (NewClass.java) compiliert wird
2.) eine ausführbare jar datei mit klassen aus dem laufenden jar und der selbst compilierten classe erstellt wird


Hoffe es ist verständlich, was genau ich meine
 

darkeye2

Bekanntes Mitglied
Über andere wege hab ich mir bis jetzt noch net so viele gedanken gemacht, dachte eigentlich, dass es möglich sein sollte, immerhin gibt es auch C programme, die neue programm compilieren können, und compiller gibts ja auch, die können ja auch quellcode compilieren, und da eclipse auch jar files erstellen kann ist es ja scheinbar auch mit einem selbstgeschriebenen programm möglich.

Ist es wirklich so schwer?

Wäre über Tipps zur umsetzung sehr dankbar.
 

Cola_Colin

Top Contributor
Es ist auf jeden Fall sehr umständlich und geht sicher besser. Wenn du unbedingt sich selbst modifizierende Programme schreiben willst, dann probiere mal assembler ;)

Was willst du genau erreichen mit der ganzen Sache ?

Ich hab das selber nie probiert, ja ich habe sogar noch nie selber direkt javac aufgerufen(IDE verwöhnt xD), aber ich denke mal, wenn du unbedingt eine neue jar willst, dann wirst du in etwa dies tun müssen:

-Schreibe deine neue Klasse.java
-Rufe javac auf und compiliere sie.
-Entpacke die anderen class Dateien aus der "Haupt"-jar.
-verwende die passenden Aufrufe um eine neue jar aus den class Dateien zu erstellen.

So oder so ähnlich würde es wohl gehen.
Klingt aber nur wenig sinnvoll.
 

darkeye2

Bekanntes Mitglied
Wenn du unbedingt sich selbst modifizierende Programme schreiben willst, dann probiere mal assembler ;)

OTT: bin grad dabei assembler zu lernen, fällt mir etwas schwerer als java (die hanze prozessorstruktur, ... ist schon recht viel theorie, bis man was praktisches machen kann), aber mal schauen, wie weit ich da komme, hab mir vor kurzem erst ein buch gekauft, bin grad am durcharbeiten

BTT:
ich hab mir auch schon gedacht, dass ich theoretisch einfach den java eigenen compiler nutzen kann, aber dieser ist soweit ich weiß nur im JDK enthalten, somit können normalanwender, die nur JRE haben das programm dann nicht nutzen...
 

slawaweis

Bekanntes Mitglied
@darkeye2
mit dem Java-Compiler in den tools.jar und dem java.util.jar Package könnte man so was komplett im Speicher erstellen, falls auf dem Ausführungssystem ein JDK vorhanden ist.

Doch wieso so kompliziert? Normalerweise erstellt man ein Subprogramm, welches eine Parameterdatei einliest und das System damit initialisiert. Alles was man noch machen muss ist, diese Parameterdatei (.xml, .properties oder .txt) erstellen, zusammen mit vorgefertigten Klassen in ein neues JAR schreiben und im JAR-Manifest auf main() verweisen. Fertig ist ein neues individuelles Programm.

Slawa
 

Ark

Top Contributor
@slawaweis: Ich denke, es geht hier darum, ein Programm zu schreiben, das den Quellcode eines anderen Programms (z.B. ein Skript, das ein Nutzer eingegeben hat) entgegennimmt und dieses Programm ausführt. Eventuell wird auch nicht das Programm direkt eingegeben, sondern aus verschiedenen Parametern heraus ein Programm erzeugt, das den Anforderungen (den Parametern entsprechend) genügt.

@darkeye2: Ist die gerade dargelegte Annahme korrekt? Du solltest vielleicht konkreter werden.

Ark
 

darkeye2

Bekanntes Mitglied
@Ark, ja du liegst richtig, der nutzer kann gewisse befehle eingeben, danach interpretiert das programm die eingaben und erzeugt einen java code, der in einer klasse gespeichert wird, diese klasse greift je nachdem, was der user eingibt auf 3- 43 andere klassen zu, die betroffenen klassen liegen entweder im jar oder werden vom programm heruntergeladen (von einer von mir festgelegten adresse).

Nun ist das einzigste Problem, dass ich die erstellte klasse noch compilieren müsste und das ganze in einen jar file packen, der ausführbar sein soll (manifest datei erstellen ist auch kein problem).
 

Cola_Colin

Top Contributor
Klingt für mich nach dem Einsatzgebiet einer Skriptsprache ?
Z.B. BeanShell - Lightweight Scripting for Java oder ähnliches.
Du könntest statt einer class Datei einen Skript erzeugen und eine Standardjar schreiben, die den Skript eben anstatt deiner class verwendet.
Beanshell kann auch im wesentlichen Javacode direkt ausführen, der Schritt des Kompilieren würde wegfallen.

Wie sich das mit dem Packen einer jar ohne jdk verhält weiß ich nicht.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Java Selenium . Parameterized.Parameters erzeugt eine Fehlermeldung Java Basics - Anfänger-Themen 14
F Session wird mehrfach erzeugt Java Basics - Anfänger-Themen 11
J Logging erzeugt zwei dateien.... Java Basics - Anfänger-Themen 7
B MySQL starten / stoppen -> Stoppen erzeugt neuen Prozess Java Basics - Anfänger-Themen 0
L Variable für JLabel wird nicht erzeugt Java Basics - Anfänger-Themen 6
Z Methoden Zugriff mit Klasse 3 auf Methode von Klasse 2 welche in Klasse 1 erzeugt wird Java Basics - Anfänger-Themen 6
W Input/Output System.in.read erzeugt nicht, was ich will Java Basics - Anfänger-Themen 1
Z FileWriter erzeugt Symbole Java Basics - Anfänger-Themen 8
1 repaint() Funktion erzeugt Flackern Java Basics - Anfänger-Themen 33
A EAN13 Font auf graphics g erzeugt Monospaces Java Basics - Anfänger-Themen 14
U Ausgabe aus Arraylist erzeugt Exceptionfehler Java Basics - Anfänger-Themen 13
C Vector erzeugt neue Indizes nach Input Java Basics - Anfänger-Themen 2
T JTable wird nicht erzeugt, wieso? Java Basics - Anfänger-Themen 17
J Mehrere Zufallszahlen erzeugen, aber keine darf doppelt erzeugt werden - Wie? Java Basics - Anfänger-Themen 5
E Compiler-Fehler Quelltext aus Buch erzeugt Fehler Java Basics - Anfänger-Themen 3
M Rausfinden welches Objekt ein anderes Objekt erzeugt hat?! Java Basics - Anfänger-Themen 3
F Wie erzeugt man ein Array von Objekten? Java Basics - Anfänger-Themen 2
B if erzeugt nur immer ein FALSE Java Basics - Anfänger-Themen 2
F .readLine() erzeugt endlosschleife Java Basics - Anfänger-Themen 4
E Jar - mit ecipse erzeugt - funktioniert nicht. Java Basics - Anfänger-Themen 6
D Ein Objekt erzeugt ein anderes Objekt - Wie beide Objekte abspeichern? Java Basics - Anfänger-Themen 5
-horn- Wann wird alles NaN erzeugt? Java Basics - Anfänger-Themen 22
P Java erzeugt zu viel Last? Java Basics - Anfänger-Themen 15
G Log-Datei wird nur in Eclipse aber nicht auf Tomcat erzeugt Java Basics - Anfänger-Themen 5
G Datei speichern erzeugt ungewollte UTF-Zeichen Java Basics - Anfänger-Themen 9
C KeyStroke erzeugt falschen Wert Java Basics - Anfänger-Themen 5
T RandomAccessFile erzeugt seltsame Zeichen Java Basics - Anfänger-Themen 2
I In Instanz ausgeben wer sie erzeugt hat Java Basics - Anfänger-Themen 2
MasterEvil Komma auf Numblock erzeugt nur Kästchen Java Basics - Anfänger-Themen 3
N Objekt wird nicht erzeugt, Werte nicht übergeben _ Null Java Basics - Anfänger-Themen 11
M BufferedImage erzeugt OutOfMemoryError Java Basics - Anfänger-Themen 10
G Properties-Objekt erzeugt Java Basics - Anfänger-Themen 3
C Es werden keine weiteren Buttons erzeugt Java Basics - Anfänger-Themen 11
U werden da immer neue Objekte erzeugt? Java Basics - Anfänger-Themen 3
G Objekt erzeugt? Java Basics - Anfänger-Themen 6
S JTextField in Schleife erzeugt, später wieder abfragen ? Java Basics - Anfänger-Themen 11
megachucky Random erzeugt immer nur dieselbe Zahl ? Java Basics - Anfänger-Themen 5
C Datei wird nicht erzeugt Java Basics - Anfänger-Themen 3

Ähnliche Java Themen


Oben