Undefined Variable

  • Themenstarter Themenstarter User
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
U

User

Gast
Hallo,

ich untersuche mit Hilfe der BCEL Javaklassen. Dabei bin ich jetzt auf ein Problem gestoßen.
Wenn ich eine Javadatei habe, in der innere Klassen vorkommen, übersetzt der Compiler diese und erstellt für jede innere Klasse eine extra Datei mit dem Namen Hauptklasse$InnerClass.class.

Wenn ich mein Programm nun über diese Datei drüberlaufen lassen will, gibt er mir die Fehlermeldung Undefined Variable aus. Es stört sich an dem Dollarzeichen.
Momentan rufe ich das Programm mit java -jar myprogram.jar zielklasse auf.

Hat jemand eine Idee, wie ich das Problem beheben kann? Muß ich irgendwas an dem Aufruf ändern?
 
Hab grad folgendes getestet:
Code:
		String file_name = "Test$1.class";
		
		ClassParser cp = new ClassParser(new FileInputStream(file_name), file_name); 
		JavaClass clazz =	cp.parse(); 
		
		 Method[] mm =	clazz.getMethods();
		 for(Method m: mm){
		 	System.out.println(m);
		 	
		 }
Ausgabe: public int compareTo(Object arg1)
Es ging also.

Poste mal den Code oder mehr Infos.
 
Ich hatte folgenden Code (hier etwas gekürzt) genutzt:
Code:
public static void main(String[] argv) {

  String Src = argv[0];
  JavaClass javaClass = Repository.lookupClass(Src);
    if (null == javaClass) {
      try {
        javaClass = new ClassParser(classNameSrc).parse();
      } 
      catch (IOException e) {
        System.out.println("Could not open file " + Src + "!");
        System.exit(1);
      }
   }
}

Das Problem dürfte aber nicht dort liegen. Wenn ich den String Src fest in die Klasse schreibe, funktioniert mein Programm auch mit solchen Klassen, die ein '$' im Namen haben. Probleme gibt es nur wenn ich den Klassenname von der Kommandozeile auslese.

Probier mal deinen Code aus ohne die Variable file_name explizit anzugeben sondern übergib den Dateinamen mal als Parameter. Funktioniert das bei dir dann immernoch? Bei mir nicht.
 
Also unter Windows funktioniert es ohne Probleme, scheint also an Solaris zu liegen.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben