Reflection funktioniert nicht in Jar

Status
Nicht offen für weitere Antworten.
N

nesapio

Gast
Hallo,
ich möchte per Reflection unterschiedliche DiagrammTypen lesen, die der User dann auswählen kann. Aus Eclipse funktioniert soweit alles bestens, aber wenn ich per Ant-Skript ein jar erstelle, dann funktioniert die Reflection nicht mehr.

Den Code häng ich unten an.

Der Pfad wird dabei aus dem paketnamen generiert und dann zu einer URL umgeformt. Über die URL wird dann der Ordner bestimmt und geöffnet, so dass daraus (eigentlich) die Diagramme geladen werden können.

Aus Eclipse sieht der Pfad wie folgt aus:
file:/C:/workspace/foo/bin/de/for/pimp/gui/result/panes/availablediagrams

Und beim Jar so:
jar:file:/C:/workspace/foo/jar/PerMoTo_0.91_Beta.jar!/de/for/pimp/gui/result/panes/availablediagrams

Im Jar ist der Ordner mit den Klassen mit drin, daran kann es also nicht liegen.
Eine Reflection die in einer Klasse der JAIDA Paketes stattfindet funktioniert ebenfalls nicht, also wäre ich auch für grundlegende Anregungen dankbar.

Code:
private String[] getDiagrams() throws ClassNotFoundException {

		logger.info("Available diagrams are found and listed!");

		// ArrayList<Class> classes = new ArrayList<Class>();
		ArrayList<String> classesAsString = new ArrayList<String>();
		File directory = null;

		try {
			ClassLoader loader = Thread.currentThread().getContextClassLoader();
			if (loader == null) {
				logger.info("loader is null");
				throw new ClassNotFoundException();
			}
			String path = packageName.replace('.', '/');
			logger.info(path);
			// String path = packageName.replace('.', '\'); //für linux
			URL url = loader.getResource(path);
			logger.info(url);
			if (url == null) {
				logger.info("url is null");
				throw new ClassNotFoundException();
			}
			directory = new File(url.getFile());
		} catch (Exception e) {
			// e.printStackTrace();
			throw new ClassNotFoundException();
		}

		if (directory.exists()) {
			String[] files = directory.list();
			boolean enthaeltDolarZeichen = false;
			
			for (int i = 0; i < files.length; i++) {
				if (files[i].endsWith(".class")) {
					
					for(int k=0; k<files[i].length(); k++){
						if(files[i].charAt(k) == '$'){
							enthaeltDolarZeichen = true;
							continue;
						}
					}
					if(!enthaeltDolarZeichen){
						String nameOfDiagram = files[i].substring(0, files[i]
							.length() - 6);
						classesAsString.add(nameOfDiagram);
					}							
				}
				enthaeltDolarZeichen = false;
			}
		}
		String[] diagrams = new String[classesAsString.size()];
		classesAsString.toArray(diagrams);

		return diagrams;
	}
 

Ebenius

Top Contributor
"funktioniert nicht" ist immer schlecht. Besser ist: Ich habe die XYZException mit der Message "XYZ are three characters" bekommen, nachdem ich meinen Computer vom Balkon geworfen habe. Der StackTrace der Exception ist dieser:
Code:
...

Ebenius
 

Wildcard

Top Contributor
In einem Jar gibt es keine Verzeichnisse und keine Dateien. Es gibt nur Jar Entries. Mit der File API brauchst du also gar nicht erst anzufangen, das geht so nicht.
 
N

nesapio

Gast
Wildcard hat gesagt.:
In einem Jar gibt es keine Verzeichnisse und keine Dateien. Es gibt nur Jar Entries. Mit der File API brauchst du also gar nicht erst anzufangen, das geht so nicht.

Danke für den Hinweis.

Wie geht es denn? Ich habe keine Ahnung wie ich anders den Ordner/jarEintrag auslesen soll. Was gibt es da für Möglichkeiten? Beispielcode wäre ein Traum.


"funktioniert nicht" ist immer schlecht. Besser ist: Ich habe die XYZException mit der Message "XYZ are three characters" bekommen, nachdem ich meinen Computer vom Balkon geworfen habe. Der StackTrace der Exception ist dieser

zeile 30 die If Abfrage da liefert directory.exists() false zurück, weswegen kein Fehler auftritt, aber eben auch die Feiles nicht gefunden werden können. Ohne diese kann ich aber JList für die Oberfläche nicht generieren und somit auch die Diagramme nicht aufrufen.
 

musiKk

Top Contributor
nesapio hat gesagt.:
Wie geht es denn? Ich habe keine Ahnung wie ich anders den Ordner/jarEintrag auslesen soll.
Der Hinweis mit den Jar Entries war schon wörtlich zu nehmen. Nur das Leerzeichen muss raus. ;) Es gibt in der API die Klassen JarFile und JarEntry, damit sollte schon einiges gehen.
 

Wildcard

Top Contributor
Wenn du tatsächlich alle Klassen auslesen willst die ungepackt in Verzeichnis XY liegen, dann musst du entweder die Pfade der Jar Entries parsen (denn ein zip/jar ist immer flach, eine Liste von Einträgen), oder eine externe Bibliothek wie TrueZip verwenden. Davon würde ich allerdings eher abraten wenn nicht unbedingt nötig.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Webstart .class Datei über Reflection laden Tools - Maven, Gradle, Ant & mehr 3
C Verbindung DB-Container funktioniert nicht Tools - Maven, Gradle, Ant & mehr 7
Gradle build funktioniert nicht Tools - Maven, Gradle, Ant & mehr 10
Encera JavaFX und Maven funktioniert nicht Tools - Maven, Gradle, Ant & mehr 1
W gradlew funktioniert nicht Tools - Maven, Gradle, Ant & mehr 37
L Ausführbare Jar-File funktioniert nicht Tools - Maven, Gradle, Ant & mehr 15
Tom299 Maven Maven funktioniert nach Installation nicht Tools - Maven, Gradle, Ant & mehr 1
M Applet Applet funktioniert in Google Chrome nicht Tools - Maven, Gradle, Ant & mehr 2
D [Maven] noclassdeffounderror in eclipse (junittest) - mvn integration-test funktioniert!) Tools - Maven, Gradle, Ant & mehr 9
D [Maven] Profil funktioniert bei package aber nicht bei release (help:active-profiles -> aktiv) Tools - Maven, Gradle, Ant & mehr 4
T Maven das mvn assembly:assembly funktioniert nicht so richtig Tools - Maven, Gradle, Ant & mehr 3
B Jar-Datei funktioniert nicht Tools - Maven, Gradle, Ant & mehr 4
V JAR-Datei eines (J)Applet funktioniert nicht - Help! Tools - Maven, Gradle, Ant & mehr 19
U Jar funktioniert nicht als Applet Tools - Maven, Gradle, Ant & mehr 3
K Applet in Eclipse funktioniert, im Browser nicht Tools - Maven, Gradle, Ant & mehr 7
P Java-Applet funktioniert unter WINXP nicht Tools - Maven, Gradle, Ant & mehr 2
X Applet funktioniert auf speziellem Webspace nicht? Tools - Maven, Gradle, Ant & mehr 2
M JApplet funktioniert nicht Tools - Maven, Gradle, Ant & mehr 5
A Applet Lesen auf 'n Server beibringen/schreiben funktioniert Tools - Maven, Gradle, Ant & mehr 10
C Applet funktioniert nicht nach Signatur Tools - Maven, Gradle, Ant & mehr 3
H Java 1.4 Applet, IE 6 und Java 6 funktioniert nicht zusammen Tools - Maven, Gradle, Ant & mehr 2
S Javaskript funktioniert im IE 6 nicht mehr Tools - Maven, Gradle, Ant & mehr 5
K Applet funktioniert auf Homepage bzw. über UNC-Pfad nicht Tools - Maven, Gradle, Ant & mehr 3
G Web Start funktioniert aus Dos Shell aber nicht aus Browser Tools - Maven, Gradle, Ant & mehr 4
S Appletviewer unter Debian funktioniert nicht Tools - Maven, Gradle, Ant & mehr 3
D Applet aufruf einer anderen Klasse funktioniert nicht Tools - Maven, Gradle, Ant & mehr 7
S Java Applet funktioniert nicht! Tools - Maven, Gradle, Ant & mehr 2
J applet funktioniert nur im firefox nicht richtig Tools - Maven, Gradle, Ant & mehr 2
P appletviewer funktioniert aber mozilla nicht Tools - Maven, Gradle, Ant & mehr 5
S Komponente (Circle) im Applet anzeigen-funktioniert nicht!! Tools - Maven, Gradle, Ant & mehr 4
R MouseClicked funktioniert nicht Tools - Maven, Gradle, Ant & mehr 16
I Applet funktioniert im Browser nicht immer Tools - Maven, Gradle, Ant & mehr 18
C Gradle startet SpringBoot-Anwendung nicht (Build aber successfull) Tools - Maven, Gradle, Ant & mehr 1
thor_norsk Maven Build Failed: kann nicht von start.spring.io generiertes Projekt auf IntelliJ IDE starten Tools - Maven, Gradle, Ant & mehr 8
S Gradle kann Lottie Implementation nicht finden Tools - Maven, Gradle, Ant & mehr 5
ExceptionOfExpectation Maven Build Failed: kann nicht von start.spring.io generiertes Projekt auf Eclipse starten Tools - Maven, Gradle, Ant & mehr 20
Ich kann Maven nicht als UmgebungsVariable hinzufügen Tools - Maven, Gradle, Ant & mehr 2
8u3631984 Hauptklasse konnte nicht gefunden oder geladen werden Tools - Maven, Gradle, Ant & mehr 9
Moman2022 Hauptklasse kann nicht gefunden werden gradle build Tools - Maven, Gradle, Ant & mehr 3
8u3631984 Gradle nicht benötigte Dependencies finden Tools - Maven, Gradle, Ant & mehr 3
T Image kreieren mit Maven bei JavaFX und nicht modularen Jars Tools - Maven, Gradle, Ant & mehr 12
Robertop maven copy-resources nicht in WAR Datei Tools - Maven, Gradle, Ant & mehr 2
von Spotz Gradle: Warum wird das Plugin nicht geladen? Tools - Maven, Gradle, Ant & mehr 4
M durch Maven wird "var" nicht gefunden Tools - Maven, Gradle, Ant & mehr 4
M Maven jpackage-image wird nicht gefunden Tools - Maven, Gradle, Ant & mehr 22
M javafx wird in einem alten programm nicht bei maven gefunden Tools - Maven, Gradle, Ant & mehr 15
P Maven Test werden nicht ausgeführt . Junit . Maven . Surefire . Eclipse Tools - Maven, Gradle, Ant & mehr 12
N Regex in nicht-gierigen Regex umwandeln Tools - Maven, Gradle, Ant & mehr 0
P Maven & Intellij Modul kann nicht aufgelöst werden Tools - Maven, Gradle, Ant & mehr 12
H Maven Bekomme cobertura in jenkins nicht zu laufen :-( Tools - Maven, Gradle, Ant & mehr 1
T Tomcat Server zeigt Webservice nicht an Tools - Maven, Gradle, Ant & mehr 21
pkm Beim Deployen wird ein Package nicht gefunden, obwohl aus Buildpath. Tools - Maven, Gradle, Ant & mehr 0
J netbeans - jasperreports - gradle - klappt nicht Tools - Maven, Gradle, Ant & mehr 0
C runnable jar nicht ausführbar Tools - Maven, Gradle, Ant & mehr 4
M Java mit Modulen kompilieren klappt nicht Tools - Maven, Gradle, Ant & mehr 9
C while Schleife in Plugin stoppt nicht Tools - Maven, Gradle, Ant & mehr 23
X Javapackager kann common.io nicht finden Tools - Maven, Gradle, Ant & mehr 4
D Deployte Anwendung startet auf dem anderen PC nicht ! Tools - Maven, Gradle, Ant & mehr 1
S Hauptklasse kann nicht geladen werden Tools - Maven, Gradle, Ant & mehr 2
D Ressource nach deployen nicht erreichbar Tools - Maven, Gradle, Ant & mehr 1
S Maven installieren - "Befehl wurde nicht gefunden" Tools - Maven, Gradle, Ant & mehr 1
S Applet Java Testen - Ergebnis wird nicht angezeigt, nur leeres Feld Tools - Maven, Gradle, Ant & mehr 15
C Tomcat GWT Beispielprojekt läuft nicht. Tools - Maven, Gradle, Ant & mehr 0
A Tomcat deployed nicht Tools - Maven, Gradle, Ant & mehr 6
C Tomcat nicht über 8080 erreichbar Tools - Maven, Gradle, Ant & mehr 3
S Java Web Start wird nicht ausgeführt Tools - Maven, Gradle, Ant & mehr 1
G Maven, finde Dependency nicht... Tools - Maven, Gradle, Ant & mehr 2
M Maven Dependency lädt pom und nicht jar Tools - Maven, Gradle, Ant & mehr 0
V Appletviewer - Befehl nicht bekannt Tools - Maven, Gradle, Ant & mehr 1
D Ant JAR-Ressourcen in JNLP-Datei sind nicht von demselben Zertifikat signiert Tools - Maven, Gradle, Ant & mehr 2
T build job läuft nicht mit findBugs...WARUM? Tools - Maven, Gradle, Ant & mehr 1
T test schlägt im build fehl, lokal nicht, warum? Tools - Maven, Gradle, Ant & mehr 2
J KomServer startet nicht Tools - Maven, Gradle, Ant & mehr 4
M Maven-Dependency kann nicht gefunden werden Tools - Maven, Gradle, Ant & mehr 2
K Subversion svn & Jenkins - Änderungen werden nicht angezeigt Tools - Maven, Gradle, Ant & mehr 4
P Applet Java Applet läuft im Browser nicht mehr (HTTPClient - NoClassDefFoundError) Tools - Maven, Gradle, Ant & mehr 3
H Applet Applet wird nicht angezeigt Tools - Maven, Gradle, Ant & mehr 2
VfL_Freak Webstart Startzeit verkürzen, wenn der WebServer nicht erreichbar ist ? Tools - Maven, Gradle, Ant & mehr 3
B Maven Selenium-Test läuft nicht unter Firefox Tools - Maven, Gradle, Ant & mehr 2
J Executable JAR geht nicht mehr... Tools - Maven, Gradle, Ant & mehr 2
D [MAVEN] Artifact wird nicht vom Repository(manager) geladen Tools - Maven, Gradle, Ant & mehr 5
G Webstart Anwendung läuft unter OSX aber nicht unter Windows Tools - Maven, Gradle, Ant & mehr 5
O Applet "Anwendung kann nicht ausgeführt werden" Tools - Maven, Gradle, Ant & mehr 6
H Applet läuft nicht im Browser Tools - Maven, Gradle, Ant & mehr 3
Q Applet Applet läuft nicht im Browser Tools - Maven, Gradle, Ant & mehr 14
Spin SVN - cachen and session nicht commiten Tools - Maven, Gradle, Ant & mehr 3
M Java Application startet bei verschiedenen JRE's nicht Tools - Maven, Gradle, Ant & mehr 7
Ollek Launch4J - EXE mit ICO klappt nicht Tools - Maven, Gradle, Ant & mehr 3
G Maven JAR-File schmeißt NoClassDefFoundError wenn /lib Verzeichnis nicht daneben entpackt wird Tools - Maven, Gradle, Ant & mehr 9
c_sidi90 Maven findet javac Compiler nicht Tools - Maven, Gradle, Ant & mehr 4
eskimo328 Maven Firmen Repository Dependencies nicht über Internet Tools - Maven, Gradle, Ant & mehr 7
S Applet Signieren, Vertrauenswürder und nicht-vertrauenswürdiger Code Tools - Maven, Gradle, Ant & mehr 16
musiKk Maven Deploy von Bundles mit Abhängigkeiten an nicht-Bundles Tools - Maven, Gradle, Ant & mehr 5
A ProcessBuilder kann nach Deployment File nicht finden Tools - Maven, Gradle, Ant & mehr 4
P Ant svnant - Userdaten nicht speichern Tools - Maven, Gradle, Ant & mehr 4
A Applet: Html Datei und Class Datei nicht im selben Verzeichnis Tools - Maven, Gradle, Ant & mehr 2
M Jar kann nicht gestartet werden - main Class not found Tools - Maven, Gradle, Ant & mehr 5
A Applet Applet startet nach Einbinden auf Website nicht Tools - Maven, Gradle, Ant & mehr 4
M EJB wird nicht richtig deployed Tools - Maven, Gradle, Ant & mehr 2
T Maven pom.xml erkennt jboss nicht Tools - Maven, Gradle, Ant & mehr 4

Ähnliche Java Themen


Oben