Antwort
 
Themen-Optionen Thema durchsuchen
Alt 29.06.2006, 15:39 Nach oben    #1
Oliver O.
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 427
Standard Klasse laden

hi,
ist es möglich, dass, wenn ich eine class-datei als "text" vorliegen habe, daraus ein Class objekt zu machen??


thx
Xean
Xean ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.06.2006, 15:46 Nach oben    #2
Erfahrener Benutzer
 
Benutzerbild von JumperII
 
Registriert seit: 27.02.2006
Beiträge: 154
Standard

Hallo,

was verstehst Du unter
Zitat:
class-datei als "text"
? Man kann sich ja da vieles vorstellen ... z.B. Java-Source, UUEncodete Class-Datei, eine XML-Beschreibung der Klasse?

Gruß,
Jumper, the II.
JumperII ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.06.2006, 16:03 Nach oben    #3
Oliver O.
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 427
Standard

na, nicht der source code, sondern das was beim compiler hinten raus kommt...
halt ne *.class datei

Geändert von Xean (29.06.2006 um 16:17 Uhr)
Xean ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.06.2006, 16:20 Nach oben    #4
Wikinger
 
Benutzerbild von xardias
 
Registriert seit: 02.03.2006
Ort: Aachen
Beiträge: 179
Standard

Zitat:
Zitat von Xean
hi,
ist es möglich, dass, wenn ich eine class-datei als "text" vorliegen habe, daraus ein Class objekt zu machen??


thx
Xean
Naja so direkt geht das nicht. Die Klassendatei muss schon im Classpath von Java liegen, dann kannst du mit Class clazz = Class.forName("wau.blubb.muh.oink.Bauernhof") die Klasse laden.
was du dann mit der Class instanz machen kannst findest du in der Java API doc (java.lang.reflect.Class), unter anderem kannst du instanzen erzeugen mit: clazz.newInstance(); oder Methoden der Klasse herausfinden usw usw.

PS: Es ist auch möglich einen eigenen ClassLoader zu konfigurieren, falls du die class Datei nicht in den Classpath kopieren willst, aber wie das geht weiß ich nicht, aber vielleicht hilft es wenn du die Dokus mal nach dem ClassLoader durchforstest.
xardias ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.06.2006, 16:46 Nach oben    #5
Johannes Müller
 
Benutzerbild von $traight-$hoota
 
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 540
Standard

http://java.sun.com/j2se/1.3/docs/ap...1;], int, int)
__________________
Weißt Bescheid - Scheiß wie weit
$traight-$hoota ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 30.06.2006, 14:30 Nach oben    #6
Oliver O.
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 427
Standard

thx. das hab ich gesucht.
Danke $traight-$hoota
Xean ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 30.06.2006, 14:54 Nach oben    #7
Oliver O.
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 427
Standard

Code:
Exception in thread "main" java.lang.NoClassDefFoundError: test (wrong name: plugin/TestPlugin)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:465)
mist...
er will die klasse wirklich im classpath haben oder??
geht aber nicht, weil die klasse nicht immer da ist...
und ich eh nicht weiß wie die klasse heißt...
wie mach ich es dann??
ich hab nur den "text" der in der class-datei steht, und brauch es als class object.
Xean ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 30.06.2006, 15:31 Nach oben    #8
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.129
Standard

Wie wär's mit ein paar Programmzeilen?
pago ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 30.06.2006, 16:59 Nach oben    #9
Erfahrener Benutzer
 
Benutzerbild von karahead
 
Registriert seit: 23.11.2005
Ort: Stadtallendorf
Beiträge: 139
Standard

@Xean:
Wenn du nicht weißt, wie die Klasse heißt, wie willst du sie dann aufrufen bzw. laden?

Und wenn die Klasse nicht immer vorhanden ist, dann kannst du ja die Exception abfangen und ignorieren oder ggf. darauf angemessen reagieren.

Poste wirklich mal ein bischen Code, ich glaub alle reden an deinem Problem vorbei (mich eingeschlossen).
__________________
Die Menschen wünschen sich Unsterblichkeit, aber wissen nichts anzufangen an einem verregneten Sonntag Nachmittag.
karahead ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 30.06.2006, 20:20 Nach oben    #10
Johannes Müller
 
Benutzerbild von $traight-$hoota
 
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 540
Standard

Zitat:
Zitat von Xean
Code:
Exception in thread "main" java.lang.NoClassDefFoundError: test (wrong name: plugin/TestPlugin)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:465)
mist...
er will die klasse wirklich im classpath haben oder??
geht aber nicht, weil die klasse nicht immer da ist...
und ich eh nicht weiß wie die klasse heißt...
wie mach ich es dann??
ich hab nur den "text" der in der class-datei steht, und brauch es als class object.
auch um eine klasse durch den classloader direkt aus nem bytearray zu laden braucht man immer noch den klassennamen. also müsstest du uns, wie karahead und pago schon gesagt haben, ein bischen programmcode und die rahmenbedingungen (zb wo du deinen bytecode herkriegst) geben.
__________________
Weißt Bescheid - Scheiß wie weit
$traight-$hoota ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.07.2006, 08:51 Nach oben    #11
Oliver O.
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 427
Standard

also gut:
mit dieser Klasse (JarResources) lese ich alle dateien aus einer jar datei.

die methode JarResources.getResources(String name) gibt ein byte[] zurück. also genau das, was in der jeweiligen datei steht.
Und mit dem wollte ich dann daraus ein class-object erstellen
Xean ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.07.2006, 10:21 Nach oben    #12
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.129
Standard

Ähm... meine nur ich das, oder ist diese Klasse völlig unnötig? Das kann jeder JARClassLoader genauso gut.

Na ja, jedenfalls ist der Klassenname identisch mit dem Namen, mit dem du die Resource lädst. Na gut, nicht identisch, du wirst / durch . ersetzen müssen.
pago ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.07.2006, 13:59 Nach oben    #13
Oliver O.
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 427
Standard

eben nicht... wenn ich es mit / mache, dann find ich die class-datei...
naja, ich werd jetzt bisschen anders ansetzen...
Danke für eure hile
Xean ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.07.2006, 15:48 Nach oben    #14
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.129
Standard

java Code:
  1. /**
  2. * @param name is a valid classname, for example: org.example.FirstExample
  3. */
  4. public Class<?> getClass(ClassLoader loader, String name) {
  5.     loader.defineClass(JarResources.find(name.replace('.', '/')+".class"));
  6.     return loader.findClass(name);
  7. }

Oder so ähnlich, keine Ahnung, wie die genauen Methodennamen heißen.
Aber wie gesagt: Das ganze kannst du dir eigentlich sparen und direkt nen JarClassLoader einsetzen. Wüsste nicht, was der nicht könnte, was die Klasse aus dem Artikel kann.
pago ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Classen dynamisch laden dtdesign PHP-Programmierung 6 10.07.2006 17:21
Klasse aus Jar laden Xean Allgemeine Java-Programmierung 1 13.06.2006 16:04
Wert Varible in Listener anderer Klasse nutzen??? risa Desktop-Applikationen und Grafik 1 03.04.2006 07:36
Klasse laden per Dateiname (!=Klassenname) Sayang Allgemeine Java-Programmierung 5 01.03.2006 11:35
DB Klasse Problem, vererben, kombinieren ex³ PHP-Programmierung 7 05.02.2006 17:06


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:14 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45