Aus Programm Klasse erstellen und verwenden

specialize

Bekanntes Mitglied
Hi, brauche bitte hilfe bei meinem Programm:

Ich will aus einem Programm eine Klasse erstellen und diese dann mittels Reflection verwenden.

Dafür habe ich in Eclipse die JDK 1.6 Libary eingebunden.

Mit folgendem Code wird im Ordner <...>/lib dann die .class Datei erstellt und ausgeführt.

Das funktioniert, wenn aus Eclipse gestartet, einwandfrei.

Java:
File fRun = new File("someFile.java");
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
Iterable<String> options = Arrays.asList( new String[] { "-d", currentDir+"\\bin\\"} );
Iterable<? extends JavaFileObject> compUnits =  fileManager.getJavaFileObjects(fRun);
Boolean compRes = compiler.getTask(null, fileManager, null, options, null, compUnits).call();           

if(compRes == true){
    System.out.println("Compilation has succeeded");
    fileManager.close();
    ClassLoader cl = Thread.currentThread().getContextClassLoader();
    Class<?> compiledClass = cl.loadClass(someFile);
    cRun = compiledClass;
}else{
    System.out.println("Compilation error");
    fileManager.close();
    throw new Exception("Compilation Error");
}

Frage 1:
Wenn ich jetzt eine Programm.jar Datei erstelle werden die ".class" files im Programm.jar/lib Ordner gespeichert nehme ich an, richtig?

Frage 2:
Wenn ich den Code aus meinem Programm.jar File ausführe, bekomme ich während des Compilierens der neuen Klasse mit diesem Programm,einen NullPointer. Hängt dass damit zusammen dass am System nur die Java JRE (1.7) gesetzt ist?
Ich hätte gerne dass mein Java unabhängig von einem JDK auch mit einer JRE läuft. Was habe ich hier für Möglichkeiten?
 
Zuletzt bearbeitet:

irgendjemand

Top Contributor
das problem dürfte dein fehlerhafter umgang mit den "dateien" sein ..

1) schon mal falsch ... du kannst ein während der runtime gelocktes JAR nicht verändern ... sondern nur ordner und dateien außerhalb des locks ...

2) hat damit nichts zu tun ... ToolsProvider liefert den JDK7 compiler dessen code die JVM7 dann auch laden kann ...

probier das ganze erstmal aus OHNE es in ein JAR zu packen ... das sollte soweit funktionieren ...

dann solltest du dich mal über die grundlegende datei-organisation und -verarbeitung in bezug mit JARs informieren ... denn da läuft einiges anderst als du denkst

und als info : verwende keine backslashes "\\" da diese NUR von windows verstanden werden ... wenn du normale foreward-slashes verwendest "/" dann wäre das programm sogar unter unix lauffähig
 

irgendjemand

Top Contributor
naja wie gesagt ...

lösungsvorschlag 1 : bringe es erstmal OHNE jar ... AUßERHALB der IDE zum laufen ... *schritt "0" hast du schon geschafft da es ja zumindest innerhalb der IDE zu funktionieren scheint*

lösungsvorschlag 2 : sich damit vertraut machen wie man aus einem in einem JAR gepackten programm mit resourcen innerhalb sowie außerhalb des JARs umgeht ...

lösungsvorschlag 3 : das in 1 und 2 gelernte wissen kombinieren -> lösung

wenn du es nicht schaffst mein post richtig zu lesen / zu verstehen ... sry bout that ... aber das ist dann nicht wirklich mein problem wenn dir scheinbar eineige grundlagen *siehe 2.* fehlen ...

persönlich könnte ich dir mal ne muster-lösung posten ... aber wo ist der lerneffekt für dich dabei ?
 

specialize

Bekanntes Mitglied
ok danke.

wie du richtig herausgefunden hast, ist mir da einiges noch unklar.

was mich interessiert: hast du einen Lösungsweg ohne das jar während der prozedur reassemblen zu müssen?
 
T

Tomate_Salat

Gast
@irgendjemand: meine fresse, hast du hier im Forum einen Ton drauf....
@Specialize: Fehlermeldungen zu Unterschlagen ist nicht gut. Interessant ist hier immer, wo die NPE fliegt. Dein Problem ist, dass du den Compiler nur im JDK und nicht im JRE zur Verfügung hast. Also in einer JRE wird das nicht laufen. Wenn du "Scriptsprachen" bereitstellen willst, dann empfiehlt sich eher JavaScript, Python, lua...
 

irgendjemand

Top Contributor
[edit]@tomatensalat
sry ... but : wer grundlagen nicht drauf hat ... und das geht hier schon los das TO es nicht schafft aus einem JAR herraus richtig mit resourcen innerhalb und außerhalb dessen um zugehen ... der soll sich dann nicht so aufregen nach dem motto : "so genug gemeckert ... lösung ?" ...
erlich : warum sollen WIR immer alles machen und dabei für TO den lerneffekt lösen wenn 95% von denen die hier fragen 1) elementare grundlagen fehlen und 2) scheinbar die unfähigkeit umgeht google nicht zu verwenden

wie ich ja schon mal i-wo sagte : wer nicht mal weis wie ein rechner arbeitet hat meiner ansicht nach nicht das recht ihm vorschreiben zu wollen was er zu tun und zu lassen hat[/edit]

den gibt es schlichtweg nicht ... du kannst während der runtime das JAR nicht verändern ... also scheidet sowohl ein dierektes "ins jar reinspeichern" aus genau so wie alles andere

das zauber-wort heißt hier URLClassLoader ...

wenn du es dann mal irgendwann geschafft hast das dein File "neben" dem jar erscheint *also in genau dem selben ordner in dem auch das jar selbst liegt ... nur eben NICHT in der IDE sondern als eigene app* dann kannst du damit schon mal weiter machen ...

dann setzt du den compiler entsprechend an *würde mir mit File.getAbsolutePath() oder sowas lieber absolute angaben holen* und lädst dann die class über URLClassLoader

das was du vor hast ... das du während der runtime INNERHALB des JAR eine neue class erzeugst und diese dann ohne weiteres auch sofort nutzen kannst ... das geht nicht
 
Zuletzt bearbeitet:

specialize

Bekanntes Mitglied
@irgendjemand: meine fresse, hast du hier im Forum einen Ton drauf....

Das ist genau der Grund warum ich es mir immer zweimal überlege hier im Forum um Rat zu fragen.
Es scheint hier gang und gebe zu sein, dass die Wissenden die Unwissenden runter machen um sich selbst ein bisschen größer zu fühlen. Wer das übers Internet braucht :bahnhof:
Ich finds schade, dass hier kein Moderator für ein gutes Klima sorgt.
Selbstverständlich befrage ich Google mehrfach und überlege mir Lösungswege im Bereich meines Wissens, das ist ja schließlich auch das Spannende am Programmieren.

irgendjemand hat gesagt.:
das zauber-wort heißt hier URLClassLoader ...

Danke.
 
B

bygones

Gast
Das ist genau der Grund warum ich es mir immer zweimal überlege hier im Forum um Rat zu fragen.
man bekommt schnell mit, wer mit welcher Art von Ton hier Antworten schreibt. Frag lieber mehrmals und lass manche sich darueber aufregen. Solange am Ende es einen gibt der dir helfen kann ist das ja so ziemlich wurscht
 
T

Tomate_Salat

Gast
Das ist genau der Grund warum ich es mir immer zweimal überlege hier im Forum um Rat zu fragen.
Nein, in der Form zum Glück nicht. So wie ich das mitbekomme fällt momentan nur "irgendjemand" verstärkt auf. Imho haben diese Leute leider eine hohe temporäre Aktivität hier im Forum.

Ja und ich sehe das wie bygones. Niemand braucht sich hier anfahren zu lassen. Stelle deine Fragen ruhig hier. Früher oder später kommt hier auch mal ein Forenmember der dir eine Vernünftige Antwort gibt.
 
G

Gast2

Gast
Sehe das auch so, irgendjemand vergreift sich hier ständig im Ton! Er meckert ja auch über falsche Rechtschreibung denkt aber selber nicht im Traum dran mal Groß/leinschriebung und Interpunktion korrekt zu beachten.

Nicht jeder hier ist so drauf.

Zum Problem:

- Lade innerhalb des jar per ResourceLoader alles was unveränderlich ist.
- Daten oder Dateien die von der Software oder dem Anwender (configs) veränderbar sein sollen gehören immer außerhalb des jars abgelegt. Achte auch darauf nicht im Programm Directory zu arbeiten, da man unter Linux und auch ab Vista dort Adminrechte braucht! Stichwort ist hier user.home

Es gibt etliche Threads wo beschrieben ist wie man Dateien relativ zum jar bearbeiten und öffnen kann schau mal ein bisschen durch.
Bei konkreten Problemen helfen wir gerne weiter :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Jose05 Umgang mit Exceptions in einen Programm Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
R Programm führt Methoden gleichzeitig aus Allgemeine Java-Themen 2
T Der Aufruf von CMD-Programm Allgemeine Java-Themen 30
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
Mike80 Processing Programm fiert ohne Arduino ein Allgemeine Java-Themen 2
B Mysteriöse Ergebnisse beim Baccarat Programm? Allgemeine Java-Themen 13
districon Programm zum Durchsuchen von (Ebay-)Artikeln Allgemeine Java-Themen 1
T Addons im eigenen Programm Allgemeine Java-Themen 1
Calli11 Was muss ich hier in die Main schreiben, damit das Programm ausgeführt wird? Allgemeine Java-Themen 4
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
S Formel für Sonnenwinkel in ein Programm überführen Allgemeine Java-Themen 11
Alex_99 Programm stürzt beim Aufruf der Funktion ab? Text ausgeben Allgemeine Java-Themen 45
B Java Programm auf virutellem Desktop laufen lassen? Allgemeine Java-Themen 1
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
Tiago1234 Warum hängt sich mein Programm auf? Allgemeine Java-Themen 22
D Programm designen Allgemeine Java-Themen 1
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
J c Programm läuft nicht in compilierter Version des Java Projektes Allgemeine Java-Themen 7
O 2D-Grafik BioFarben-Programm soll auf Vollbild schalten Allgemeine Java-Themen 1
S Nachrichten Filter Programm Allgemeine Java-Themen 14
S Programm schreiben, das mir aufgrund von Schlagwörtern, die ich im Internet suche, relevante Themen sofort anzeigt. Allgemeine Java-Themen 1
T Hilfe bei Programm. IDE: Eclipse mit EV3-Plugin, lejos Allgemeine Java-Themen 8
Lukas2904 Swing Anzeigen lassen das das Programm geschlossen wurde Allgemeine Java-Themen 3
TechnikTVcode Mail Programm Allgemeine Java-Themen 2
S Programm entwickeln, welches ein Dreieckspuzzle lösen kann Allgemeine Java-Themen 5
R Lesen von Interfaces (Programm Vervollständigen) Allgemeine Java-Themen 10
Dann07 Java-Programm findet DLLs nicht! Allgemeine Java-Themen 20
OSchriever Linux-Programm öffnen Allgemeine Java-Themen 6
P USER Management in SQL übergreifend auf JAVA Programm Allgemeine Java-Themen 41
L Eclipse Konsole im exportierten Programm Allgemeine Java-Themen 2
OSchriever Programm über Linux-Kommandozeile ausführen Allgemeine Java-Themen 20
D Verkauf von einem Programm welches ich in Java geschrieben habe Allgemeine Java-Themen 4
M Programm erkennt String aus .txt Datei nicht Allgemeine Java-Themen 3
P Erstelltes Programm ist doppelt so groß Allgemeine Java-Themen 11
N Programm nach Abschluss neustarten lassen Allgemeine Java-Themen 6
S Einfaches Programm programmieren Allgemeine Java-Themen 5
M kleines KI Programm Idee Allgemeine Java-Themen 7
D Boolean von ein anderem Java Programm während der Laufzeit ändern Allgemeine Java-Themen 23
L Excel Datei löscht sich selbst im Programm - Java Allgemeine Java-Themen 3
I File ausführen und mein Programm bearbeiten lassen Allgemeine Java-Themen 11
ralfb1105 Starten Java App(s) (.jar) aus einem Java Programm Allgemeine Java-Themen 18
temi Java Programm aus einer DB laden und starten Allgemeine Java-Themen 2
N Programm startet nicht, nur per cmd Allgemeine Java-Themen 5
J Programm zum Suchen eines Wortes im Dateisystem Allgemeine Java-Themen 4
E Java Programm mit Clients erweitern - Möglichkeiten? Allgemeine Java-Themen 2
Joker4632 Methoden Befehl an bereits extern geöffnete Programm-spezifische Konsole senden Allgemeine Java-Themen 1
M Dieses Programm schneller machen? Allgemeine Java-Themen 2
R Programm zur Rekursion Allgemeine Java-Themen 5
N Quicksort Programm hängt sich auf Allgemeine Java-Themen 6
S Compiler-Fehler Programm verhält sich in Eclipse anders Allgemeine Java-Themen 1
B Input/Output Programm zum Auslesen/Beschreiben von Textdateien, wie Geschwindigkeit erhöhen? Allgemeine Java-Themen 18
dereki2000 Programm veröffentlichen Allgemeine Java-Themen 14
mrbig2017 Threads Chat Programm mit Threads? Allgemeine Java-Themen 2
M Suche aktuelle Apache Poi Bibliothek zum Einbinden in mein Programm Allgemeine Java-Themen 2
J Java "Bank Programm" Brauche eure Hilfe Allgemeine Java-Themen 3
S Java Programm (Spiel mit den Boxen) Allgemeine Java-Themen 1
kodela Programm hängt in der Ereigniswarteschlange Allgemeine Java-Themen 13
A Java Programm verbessern/vereinfachen Allgemeine Java-Themen 20
P Programm darf nicht mehrfach startbar sein Allgemeine Java-Themen 16
S Programm hängt sich manchmal (selten) auf Allgemeine Java-Themen 9
JavaNewbie2.0 Programm nicht im Taskmanager schliesen können Allgemeine Java-Themen 15
J XML Datei mit installiertem Programm öffnen Allgemeine Java-Themen 7
Arif Input/Output Dateien im Jar-Programm speichern Allgemeine Java-Themen 12
H Java FX 2 Fragen um Programm in mehrere sprachen zu übersetzen in Gluon Framwork Allgemeine Java-Themen 3
JavaNewbie2.0 Programm bleibt "stehen" Allgemeine Java-Themen 2
JavaNewbie2.0 Start eines Anderen Programm erkennen Allgemeine Java-Themen 6
E Mit Java ein Python Programm starten Allgemeine Java-Themen 20
Q-bert Daten von Java Programm speichern Allgemeine Java-Themen 4
Aruetiise Methoden .jar mit Programm öffnen Allgemeine Java-Themen 2
C anderes Programm schließen! Allgemeine Java-Themen 5
C Webseiten Programm problem Allgemeine Java-Themen 5
E Programm auf Installation prüfen Allgemeine Java-Themen 1
J Programm zum Download von CSV-Dateien Allgemeine Java-Themen 4
E Programm ohne Windowsrand(Vollbild) ? Allgemeine Java-Themen 5
G Programm, das nach abgearbeiteter main Methode weiterläuft Allgemeine Java-Themen 72
P Schnittstelle java Programm zu Webserver / Browser Allgemeine Java-Themen 2
J Schutz Programm Jar Exe Allgemeine Java-Themen 7
R javax.comm --> Programm funktioniert nach Export nicht mehr Allgemeine Java-Themen 0
Blender3D Java Swing Programm Windows 10 Autostart Problem Allgemeine Java-Themen 2
U Input/Output Warum wirft mir das Programm diesen Fehler? Allgemeine Java-Themen 6
X jvm exception abfangen und an externes Programm schicken Allgemeine Java-Themen 4
B Programm updaten mit FXLauncher Allgemeine Java-Themen 1
D Nicht quelloffenes Programm Allgemeine Java-Themen 5
F Java-Programm lizensieren Allgemeine Java-Themen 21
I Programm im Hintergrund bei Windows zur Steuerung der Tastatur nutzen Allgemeine Java-Themen 2
X Aus Programm "Installationsprogramm" machen Allgemeine Java-Themen 6
T Java Programm in Internetseite? Allgemeine Java-Themen 4
T Java Programm frisst RAM Allgemeine Java-Themen 6
H Alter Java-Programm läuft nicht mehr. Laut strace fehlt libpthread.so.0 Allgemeine Java-Themen 3
H Runtime reagiert erst wenn Programm abbricht Allgemeine Java-Themen 1
E Exceptions abfangen und dann Programm stoppen - aber wie? Allgemeine Java-Themen 2
Neumi5694 Offenes Programm nutzen Allgemeine Java-Themen 4
L Java-Programm Zahlenkombinationen ausgeben Allgemeine Java-Themen 10
KaffeeFan Methoden Suche Methode um Programm kurz warten zu lassen Allgemeine Java-Themen 22
J Programm meldet "Keine Rückmeldung" nach Verbindung zum Server Allgemeine Java-Themen 4
T Java Programm sauber beenden (Mac OS) Allgemeine Java-Themen 7
O Programm wird einfach "gekillt" Allgemeine Java-Themen 3
L TV Programm API/Web Service o.ä. Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben