Seltsames Classloader Problem

sagi7

Mitglied
Hallo zusammen,

ich habe folgenden Code.
Code:
	void showVersion() {

		URL appVersion = MainWindow.class.getClassLoader().getResource(
				"environment/ApplicationVersion.class");
		Logger.getLogger(MainWindow.class).info(
				"got ApplicationVersion URL : " + appVersion);

		final String vers = environment.ApplicationVersion.VERSION;
		JOptionPane.showMessageDialog(this.mainWindow,
				Messages.getString("Version") + vers,
				Messages.getString("MainWindow"),
				JOptionPane.INFORMATION_MESSAGE); // $NON-NLS-N$
	}

Nun debugge ich durch den Code und vers ist 1.94d.
Wenn ich in Eclipse Inspect von environment.ApplicationVersion.VERSION mache, kommt der erwartete Wert 1.94e.
Via der Url der ersten beiden Statements öffne ich die Class Datei mit dem Decompiler und bekomme die richtige Version 1.94e angezeigt.
Es scheint, als würde eine alte Version der Klasse geladen.
Um dem auf den Grund zu gehen, lasse ich die Anwendung mit -verbose laufen.
Nun wird mir das Classloading von zig Klassen ausgegeben - nur nicht von der betroffenen !!****
Ich benutze jdk 1.6.0_22 unter Linux - das Problem tritt aber auch in der fertigen Anwendung unter Windows auf.

Hat jemand eine Idee?
 
Ich habe das Problem gefunden.
Es liegt am Compiler.
Er macht aus

Code:
final String vers = environment.ApplicationVersion.VERSION;
String vers = "1.94f";

Dadurch läßt sich auch erklären, daß mit -verbose die Klasse nicht gezeigt wird, da
die VERSION schon zur Compile Zeit aufgelöst wird.
Nun hat die Änderung der Version keinen Einfluß mehr auf die Klasse, in der sie angezeigt wird.
Diese wird in Eclipse nicht mehr neu compiliert.
Ein Clean ist notwendig, um den Fehler zu vermeiden.
 
Zurück