JDK erweitern

GUI-Programmer

Top Contributor
Hallo, ich bin auf der Suche nach einer Möglichkeit das jdk zu erweitern. Ich möchte eine .java Datei in den ZIP-komprimierten Ordner src bringen. Zuerst habe ich versucht, einfach durch kopieren und einfügen einer bestehenden .java Datein ins Packet java.awt diese dann zu verwenden. Allerdings, wenn ich die Klasse dann per import - Anweisung importieren möchte, meldet der Compiler, dass er die Klasse nicht gefunden hat.

Also was muss ich tun? (Ich möchte nicht ein eigenen Klassenverzeichnes mit der Umgebungsvariable CLASSPATH erstellen / verwenden, sondern das jdk (src) mit eigenen Klassen erweitern.)
:)
 

Ariol

Top Contributor
WARUM????


Nee, mal im Ernst: erstell ein Jar oder auch Zip mit deinen "kompilierten"! Klassen und leg das dabei.
Am JDK selbst spielt man nicht rum.
 

ARadauer

Top Contributor
Was hast du grundsätzlich vor?
Es gibt keinen logischen Grund irgendetwas in java.awt Package zu packen und schon gar nicht die jkd jars zu patchen
 

GUI-Programmer

Top Contributor
Ich habe vor, ein neues Layout ins jdk, im Packet java.awt einzubinden
Damit folgendes funktioniert:
Java:
import java.awt.MeinLayout;
...
setLayout(new MeinLayout());
 

ARadauer

Top Contributor
1. Das muss nicht im awt package sein. Das kann heißen wie du willst
2. Auch wenn du es ins awt package rein packst. Muss es nicht in die jdk rein.
 
T

tommysenf

Gast
Ich denke mich daran zu erinnern, dass die Packages java.* und javax.* für benutzerdefinierte Klassen gesperrt sind.
Der gängige Weg für das was du vorhast sollte sein, dass du

1. Einen anderen Package Namen wählst.
2. Deine Klasse/n in ein Jar packst und im Verzeichnis lib/ext des JDK/JRE ablegst

Damit ist dein Layout dann in allen Anwendungen die dieses JDK nutzen verfügbar.
 

GUI-Programmer

Top Contributor
--> ElkeB: Das ist mir schon klar. Frage, ist es denn gar nicht möglich?. Eigentlich müsste es doch gehen, dann ich habe bereits jdom in org gebracht, mit einer .jar Datei. Nur, wie ich das selbst mit einer Klasse machen soll, ist mir eben unklar.
 

Ariol

Top Contributor
Ich denke mich daran zu erinnern, dass die Packages java.* und javax.* für benutzerdefinierte Klassen gesperrt sind.
Der gängige Weg für das was du vorhast sollte sein, dass du

1. Einen anderen Package Namen wählst.
2. Deine Klasse/n in ein Jar packst und im Verzeichnis lib/ext des JDK/JRE ablegst

Damit ist dein Layout dann in allen Anwendungen die dieses JDK nutzen verfügbar.

Lasst doch den Blödsinn.
Sowas bringt beim besten Willen nur Probleme.

Er soll sich sein eigenes Jar machen und dann wie üblich in sein Projekt einbinden.
Dann kann er seine Projekte auch problemlos weiterverteilen.
 

Ariol

Top Contributor
--> ElkeB: Das ist mir schon klar. Frage, ist es denn gar nicht möglich?. Eigentlich müsste es doch gehen, dann ich habe bereits jdom in org gebracht, mit einer .jar Datei. Nur, wie ich das selbst mit einer Klasse machen soll, ist mir eben unklar.

Indem du deine Klasse in ein Package java.wassweißich ablegst.
Aber nochmal: WARUM?

Die Klasse muss da nicht liegen!einself11!
 
G

Gast2

Gast
Mit einer IDE deiner Wahl in ein paar Mausklicks.
Falls ne IDE für dich nicht in Frage kommt befrag google nach Classpath.
 

GUI-Programmer

Top Contributor
Sorry, hab es selbst hingekriegt. Habe ein Package erstellt, das java heißt, darin ein Package awt, und darin die Datei MeinLayout.java compiliert, jar-File erstellt und in jdk.../lib/ext geschoben. Nun funktioniert der import auch, wie ich es mir vogestellt habe.
 

ARadauer

Top Contributor
File erstellt und in jdk.../lib/ext geschoben.
Nein! Rechte Maustaste aufs Projekt ->Properties -> Java build Path
Unter Libraries Add Jar oder Add External Jar.

Und du sollst deine Packages nicht java.awt nennen.
 
Zuletzt bearbeitet:
T

Tomate_Salat

Gast
... und in jdk.../lib/ext geschoben. Nun funktioniert der import auch, wie ich es mir vogestellt habe.

Es wurde so oft gesagt und trotzdem tust du es :noe:. Wenn du die Jar in einem Projekt verwenden willst, dann erstellst du dir im Projekt-verzeichniss einen Ordner [c]lib[/c] und legst dort die jar ab. Danach machst du das, was ARadauer geschrieben hat.
 
G

Gast2

Gast
Sorry, hab es selbst hingekriegt. Habe ein Package erstellt, das java heißt, darin ein Package awt, und darin die Datei MeinLayout.java compiliert, jar-File erstellt und in jdk.../lib/ext geschoben. Nun funktioniert der import auch, wie ich es mir vogestellt habe.

Wieso fragen manche Mitmenschen wenn sie die Antworten dann doch ignorieren... :noe:
 
G

Gastredner

Gast
Sorry, hab es selbst hingekriegt. Habe ein Package erstellt, das java heißt, darin ein Package awt, und darin die Datei MeinLayout.java compiliert, jar-File erstellt und in jdk.../lib/ext geschoben. Nun funktioniert der import auch, wie ich es mir vogestellt habe.
Ja - genau solange, wie du das Programm auf deinem Rechner ausführst und neue JDK-/JRE-Versionen in den immergleichen Ordner installierst. Wechselst du auf einen anderen Rechner, musst du dessen JRE-Verzeichnis ebenfalls mit deinem eigenen Code "bestücken" - was bei einer größeren Anzahl von Klassen oder ganzen Bibliotheken dann schnell zu einer unwartbaren, benutzerunfreundlichen Abhängigkeitshölle wird.
Hör auf das, was dir geraten worden ist: pack deine Klasse in ein eigenes Package (niemand erwartet fremden Code in java.* oder javax.*!) und stecke diese Klasse entweder direkt in deine Projekte oder referenziere sie als externe Bibliothek. Wie du das machst wird in unzähligen Tutorials, Threads, Büchern und Videos erläutert.
 

GUI-Programmer

Top Contributor
Der Vorschlag von ARadauer ist schon ganz gut:
Nein! Rechte Maustaste aufs Projekt ->Properties -> Java build Path
Unter Libraries Add Jar oder Add External Jar.

Jedoch arbeite ich nicht nur mit Eclipse!!!
Deshalb würde es mich interessieren, wie es mit NetBeans IDE und BlueJ funktioniert.


Außerdem: Ich muss zugeben, dass meine Lösung, mit "ins JDK bringen" wirklich untauglich war, da es
letztendlich sogar zu Fehlern im Programm und dann auch bei Fehlern beim Compilieren geführt hat (Compiler hat sich aufgehängt bei BlueJ).
 
G

Gast2

Gast
Funktioniert in Netbeans ähnlich, die Menüpunkte unterscheiden sich unter Umständen leicht, aber das wird marginal sein.
Wie das in BlueJ funktioniert... keine Ahnung, vllt greift da auch irgendwo ein wenig BlueJ-Magic ©
 

Aldimann

Bekanntes Mitglied
Deshalb würde es mich interessieren, wie es mit NetBeans IDE und BlueJ funktioniert.

Mein Rat: Vergiss BlueJ nimm Netbeans oder Eclipse. Jedenfalls wenn du wirklich Programme schreiben willst...

Außerdem: Ich muss zugeben, dass meine Lösung, mit "ins JDK bringen" wirklich untauglich war, da es
letztendlich sogar zu Fehlern im Programm und dann auch bei Fehlern beim Compilieren geführt hat (Compiler hat sich aufgehängt bei BlueJ).

Deswegen haben dir auch alle davon abgeraten ;).
Noch ein Tipp: Wenn dir jemand dringend von etwas abrät, du es aber doch für deine angestrebte Lösung hälst, dann frag solange nach bis du dein Gegenüber verstanden hast und seine Einwände abwägen kannst...
 
G

Gast2

Gast
Außerdem: Ich muss zugeben, dass meine Lösung, mit "ins JDK bringen" wirklich untauglich war, da es
letztendlich sogar zu Fehlern im Programm und dann auch bei Fehlern beim Compilieren geführt hat (Compiler hat sich aufgehängt bei BlueJ).

Wer hätte schon mit sowas gerechnet :noe:

Und dazu, dass du andere IDEs benutzt. Dann musst du dich halt mit denen beschäftigen. Wie man sie benutzt ect.

Am JDK rumzufummeln nur um sich nicht mit den korrekten Vorgehensweisen in der eigenen IDE "belasten" zu müssen ... nunja ...
 

Dit_

Bekanntes Mitglied
Sorry, hab es selbst hingekriegt. Habe ein Package erstellt, das java heißt, darin ein Package awt, und darin die Datei MeinLayout.java compiliert, jar-File erstellt und in jdk.../lib/ext geschoben. Nun funktioniert der import auch, wie ich es mir vogestellt habe.

und damit hast du jdk erweitert? :lol:

Dann gilt folgendes:

  1. Du hast Lizenz um Java JDK modifizieren zu können
  2. Dein Layout wurde natürlich unter Einhaltung aller Java(Beans) Konventionen implementiert
  3. JavaDoc ist auch dabei
  4. Die Erweiterung kann man von Oracle Seite bald runterladen

Spaß bei Seite. :noe:

Wenn ich ein C++ Hallo Welt Programm implementiere, kompiliere und als EXE und in den Ordner C:\Windows\System32 verschiebe, heißt es kaum dass ich Windows erweitert habe.

:oops:
 
G

Gast2

Gast
und damit hast du jdk erweitert? :lol:

Dann gilt folgendes:

  1. Du hast Lizenz um Java JDK modifizieren zu können
  2. Dein Layout wurde natürlich unter Einhaltung aller Java(Beans) Konventionen implementiert
  3. JavaDoc ist auch dabei
  4. Die Erweiterung kann man von Oracle Seite bald runterladen

Spaß bei Seite. :noe:

Wenn ich ein C++ Hallo Welt Programm implementiere, kompiliere und als EXE und in den Ordner C:\Windows\System32 verschiebe, heißt es kaum dass ich Windows erweitert habe.

:oops:

DAS stimmt natürlich auch wieder ^^ :applaus:
 

Kr0e

Gesperrter Benutzer
Es gibt hin und wieder Momente wo der Zugriff auf die default Klassen in manchen Paketen von Java echt gut wäre, an die man von außen eigentlcih nicht ran soll! Aber nicht bei einem Layout :D
 

GUI-Programmer

Top Contributor
Vielen Dank für euere Beiträge. Ich weiß nun, wie ich bei welcher Entwicklerumgebung vorgehe!:)


Und übrigens:

Ich nutze vor allem NetBeans, dann kommt an 2. Stelle Eclipse.
Begründung:
Wenn ich größere Oberflächen programmiere erleichtert mir NetBeans das, da ich die Komponenten per Drag & Drop auf mein JPanel ziehen kann. Anschließend, wenn die View fertig ist, kopiere ich meist den Programmcode und füge ihn bei Eclipse ein, um ihn dort zu sortieren (Deklaration der Attribute möchte ich z.B. oben haben) und kommentieren und außerdem zu ergänzen (Controller & Model).

BlueJ verwende ich eigentlich nur dann, wenn ich ganz kurz mal ein kurzes Programm unter 50 Zeilen schreiben möchte, oder um meinen Kumpels etwas zu erklären (Habe es bis jetzt noch nicht geschafft sie von NetBeans bzw. Eclipse zu überzeugen!), d.h. Programm schreiben, ihnen das komplette BlueJ-Projekt geben.
 
G

Gast2

Gast
Wenn ich größere Oberflächen programmiere erleichtert mir NetBeans das, da ich die Komponenten per Drag & Drop auf mein JPanel ziehen kann.
Eclipse hat mit dem WindowBuilder Pro auch einen sehr guten GUI Builder.
 

GUI-Programmer

Top Contributor
OK, nochmals danke, werde dann demnächst mal den WindowBuilder Pro installieren und ausprobieren.
Vielleicht hat dann ja sogar NetBeans auch noch (mit BlueJ) ausgedient!!! :)
 

Empire Phoenix

Top Contributor
Es gibt hin und wieder Momente wo der Zugriff auf die default Klassen in manchen Paketen von Java echt gut wäre, an die man von außen eigentlcih nicht ran soll! Aber nicht bei einem Layout :D


ERm, eigener Classloader? , Reflection manipulationen?
(ode es sein lassen weil es in 99% sinnvollere Lösungen gibt)


Window pro builder ist wirklich echt gut, er erstellt zb code der von menschen gelesen und verarbeitet werden kann. (was bei netbeans eher begrenzt zutrifft) Zudem kann er noch SWT wenn mans mal benutzen muss.
 

Kr0e

Gesperrter Benutzer
@Empire Pheonix:

Klar, das ginge mit Reflection. Aber einfacher wäre es doch, wenn man seine Sourcedatei einfach in java.awt.* legen könnte. Spezieller Anwendungsfall: Swing ohne natives Fenster zeichnen zu lassen! - Es gibt da aber noch weitere Anwendungsfälle ;-)

Ich hab mich da mal durchgewühlt, doch um da anständig dran zu kommen, muss man halt entweder im Paket sein oder eben mit Reflection ein riesen Wirrwarr anzetteln.
 

GUI-Programmer

Top Contributor
Habe nun den Window Builder Pro installiert und ausprobiert. Funktioniert perfekt. Werde nun komplett auf NetBeans verzichten (können).
Nochmals Danke!:)
 

Kr0e

Gesperrter Benutzer
Ich habe auch mit NetBeans immer gearbeitet, hab dann iwann mal Eclipse ausprobiert und fern ab vom Window Builder Pro, den es damals noch garnicht gab, gefiel mit Eclipse iwie besser... Ka.. Das Feeling ^^
 

Ulathar

Aktives Mitglied
Eclipse hat mit dem WindowBuilder Pro auch einen sehr guten GUI Builder.

Das ist aber evtl noch nicht bei allen Usern (vor allem bei Einsteigern) angekommen, da dieser GUI Builder ja erst seit der neuesten Eclipse 3.7 version dabei ist wenn ich nicht irre.
Der GUI Builder den man davor über das Eclipse Project bekam... wie hieß er noch gleich ... VE Builder oder so? War nämlich so dermaßen für die Tonne das einem für eine detailierte beschreibung glatt die Worte fehlen ;).
Jigloo wäre da noch ne gute Option, die ich lange in Eclipse verwendet habe. Aber ja, das Google Geschenk ist nach kurzer eingewöhnungsphase mit den Netbeans Bordmitteln sicher konkurenzfähig.
 
T

Tomate_Salat

Gast
WindowBuilder gibts und gab schon für 3.6 bis runter zu 3.4. Dank Google gibt es ihn seit Helios schon ne Zeit draußen war kostenlos und nun soll er in Indigo integriert werden. Meine Indigo-Version hatte ihn noch nicht standardmäßig implementiert (kein Wunder: eine 3.7-Version davon, war auch offiziel noch nicht zur verfügung), aber ich glaube, mittlerweile dürfte es soweit sein.
 

GUI-Programmer

Top Contributor
Und noch was:
Der Window Builder hat für mich, neben der Tatsache, dass man den automatisch erstellten Code gut bearbeiten / ändern kann noch einen weiteren großen Vorteil:
Man kann Code erst selbst schreiben, der WB kann ihn dann trozdem anzeigen, obwohl nicht mit Drag & Drop erstellt.
Somit zeigt er sogar gezeichnetes an. Klasse, die von JComponent erbt. paintComponent(Graphics g) überschreiben, dann noch super.paintComponent(g);
Anschließend diese Klasse als Komponent einer mit den WB erstellten Klasse hinzugfügen, und schon sieht man das gezeichnete!!!

Falls Code-Beispiele gefragt sind, bitte wieder antworten.
 
D

despikeexd

Gast
Ohne mir jetzt das gesamte Topic durchgelesen zu haben

@TO

Mal ganz erlich : welchen effekt soll es haben wenn du ein java-File in das SRC.ZIP im JDK-Ordner einfügst ?
Dir ist scheinbar nicht bewusst das dieses Zip nur eine mit-auslieferung der im jdk compilten klassen ist. Wenn du wirklich am jdk rumspielen willst müsstest du das ganze ins lib/ct.sym patchen ... wobei ich bezeifel das sich irgend ein java-tool dazu auch nur anstiften lässt.

Vielleicht solltest du erstmal einige Grundlagen in den gebieten Klassen und Pakete lernen

btw : es wird von Sun (Oracle) deutlich darauf hingewiesen keine bereits vorhanden Pakete wie java.* oder javax.* als eigene paketnamen zu verwenden da der compiler dann nicht mehr weis welches von beiden paketen er importieren soll.
also pack dir da erstmal n eigenes präfix vor damit dein compiler auch weis was er machen soll
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Erste Schritte Liste erweitern Allgemeine Java-Themen 11
Bluedaishi Zeile um zeichen erweitern Allgemeine Java-Themen 9
J Application mit PLugin erweitern Allgemeine Java-Themen 2
A Java Kenntnisse erweitern Allgemeine Java-Themen 5
E Java Programm mit Clients erweitern - Möglichkeiten? Allgemeine Java-Themen 2
B Hilfe!! spiel um Funktion des Selektierens erweitern (mit ASCII-Tabelle) Allgemeine Java-Themen 3
J build.xml erweitern Allgemeine Java-Themen 2
B Polibios Array erweitern Allgemeine Java-Themen 1
M XML-Datei "erweitern" mit Java Allgemeine Java-Themen 2
K Java Standardbib/reservierte Wörter erweitern Allgemeine Java-Themen 1
H Reg Exp Ausdruck erweitern Allgemeine Java-Themen 2
T Klassen Mehoden einer Klasse erweitern Allgemeine Java-Themen 5
M HashMaps: Wert erweitern Allgemeine Java-Themen 3
Rudolf JUnit4-Testklasse erweitern ohne zu vererben Allgemeine Java-Themen 6
J Input/Output Jar-Datei zur Laufzeit erweitern Allgemeine Java-Themen 13
nrg URL erweitern Allgemeine Java-Themen 2
T Klassen Fabrik (Factory) zur Laufzeit erweitern Allgemeine Java-Themen 5
S Ant erweitern..? Allgemeine Java-Themen 4
I Pattern zum Erweitern existierender Objekte Allgemeine Java-Themen 4
C Kontextmenü erweitern und mit Java Anwendung verknüfen. Allgemeine Java-Themen 3
W Erweitern einer Klasse mit Generics Allgemeine Java-Themen 8
M eigene Klasse durch Composition mit java.io.File erweitern Allgemeine Java-Themen 3
D Enums subclassen / erweitern? Allgemeine Java-Themen 2
J Können Programme sich selbst erweitern? Allgemeine Java-Themen 6
dunhillone Mittels Annotations Methoden "erweitern"? Allgemeine Java-Themen 11
S Objekt in Datei erweitern Allgemeine Java-Themen 16
DamienX Erweitern von Runnable Allgemeine Java-Themen 3
P Funktion vorhanden - wie auf Transitivität erweitern? Allgemeine Java-Themen 6
N Classpath mit ClassLoader künstlich erweitern Allgemeine Java-Themen 2
M ArrayList erweitern - generics Allgemeine Java-Themen 4
P JComponenten (Button, JSlider, usw) erweitern Allgemeine Java-Themen 12
G Vector erweitern Allgemeine Java-Themen 4
G Tabellenzeilen erweitern Allgemeine Java-Themen 9
B desktop auf monitor erweitern Allgemeine Java-Themen 22
N Graphische Oberfläche dynamisch erweitern möglich? Allgemeine Java-Themen 4
D Programm um Klassen erweitern ohne neukompilieren? Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben