Package durchsuchen

tschero

Aktives Mitglied
Hi Leute,

hier im Forum wurde letztes Jahr schon mal was ähnliches disskutiert, der Thread aber leider geschlossen.

Lage:
Ich habe ein Package (Fahrzeuge) in welchem sich 3 Klassen befinden (Audi, Porsche, BMW).
Alle drei Klassen erben von Auto.

Frage:
Gibt es mittlerweile eine Möglichkeit, das Package nach den vorhandenen Klassen zu durchsuchen um diese dann zu instanziieren?

Java:
package packagedurchsuchen;
import Fahrzeuge.*;

public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) 
    {
        // Durchsuche das Package Fahrzeuge und liste mal alle darin enthaltenen Klassen auf um diese dann zu instanziieren
    }
}

Wenn nicht, hat jemand einen Vorschlag wie man eine Instanziierung von Hand (new Audi(), new Porsche(); new BMW()) umgehen kann?

Wenn jetzt über 100 Klassen in dem Package sind, ist das ne Menge Schreibkram.

Gruß
tschero
 

Cola_Colin

Top Contributor
Keine Ahnung ob es möglich ist an die Klassen "direkt" über Reflection dranzukommen, aber es ist sicher möglich einfach alle .class Dateien im Package(=Ordner) Fahrzeuge zu durchlaufen und aus dem Dateinamen den Klassennamen zu bilden.
Falls das ganze am Ende in einer jar sein soll könnte das eventuell Probleme machen, da könnte man aber z.B. zunächst noch mit nem Skript eine textdatei erzeugen, die die Klassennamen zusammensammelt und diese Textdatei dann in die jar packen. Aus der können dann die Klassennamen ausgelesen werden.
 

tschero

Aktives Mitglied
Hi,

ich würde gerne die *.java Dateien ansprechen und das Package ist nicht in einer *.jar,sondern ist einfach im gleichen Projektordner (NetBeans) untergebracht.

Gruß
tschero
 

Anhänge

  • Screenshot.jpg
    Screenshot.jpg
    15,9 KB · Aufrufe: 31
G

Gast2

Gast
Wenns nur class Files in einem Ordner sind kannst du dir doch ganz einfach alle Dateien aus dem Ordner geben lassen (File#listFiles) und instanziieren. Vorausgesetzt alle Klassen haben einen gleichen Konstruktor.
 

tschero

Aktives Mitglied
@EikeB:
...sorry, ich verstehe Dich nicht ganz.
Ich habe momentan keine *.class Dateien (ausser die, welche sich im Projektordner im Dateisystem befinden) sondern nur die Vorgabe wie in dem Screenshot beschrieben.
Ich würde gerne die *.java Dateien ansprechen.

Wie meinst Du dass denn genau?
 
G

Gast2

Gast
Die java Dateien enthalten nur deinen Quelltext. Diese java Dateien werden kompiliert (in class Dateien) und dann ausgeführt.
Ich weiß nicht in welchem Ordner die class Dateien unter Netbeans liegen (in Eclipse ist es der classes Ordner), genau da musst du ansetzen.

Ich würde gerne die *.java Dateien ansprechen.
Was meinst du damit? Oder was erhoffst du dir dadurch?
 

tschero

Aktives Mitglied
Was meinst du damit? Oder was erhoffst du dir dadurch?

Wenn Du Dir den Screenshot anschaust, siehst Du das Package mit den Fahrzeugen.
Wenn sich dort mehr als die derzeit drei Fahrzeuge drin befinden, möchte ich mir ein instanziieren von Hand, also jedes einzeln, ersparen und einfach sagen: schau in das Package und erzeuge von jeder *.java Klasse eine eigene Instanz.
 
G

Gast2

Gast
Du kannst von .java Dateien keine Instanz erzeugen, die müssen erst kompiliert werden ;) Daraus werden dann .class Dateien.

Schau doch mal in deinen Projekt Ordner, da müsste es irgendwo einen classes/, bin/ oder /dist Ordner geben wo du die entsprechenden .class Dateien findest. Da findest du auch die selben Package Struktur wie in deinem Screenshot.
 

tschero

Aktives Mitglied
Ok, ja die habe ich. Sieht genau so aus wie Du sagst.

Wie spreche ich die *.class Dateien in diesem Ordner denn an? DAS habe ich noch nicht gemacht.
 

Cola_Colin

Top Contributor
Dies funktioniert so, zumindest wenn man es nicht als jar packt bei mir:
Java:
import java.io.File;
import java.util.ArrayList;
import java.util.List;

import searchplace.ReferenceClass;


public class Main {
	public static void main(String[] args) throws InstantiationException, IllegalAccessException {
		System.out.println(makeInstances(listClassesInPackage(ReferenceClass.class)));
	}
	
	public static List<Object> makeInstances(List<Class<?>> classes) throws InstantiationException, IllegalAccessException {
		List<Object> obj = new ArrayList<Object>();
		for (Class<?> clazz: classes) {
			obj.add(clazz.newInstance());
		}
		return obj;
	}
	

	public static List<Class<?>> listClassesInPackage(Class<?> referenceClass) {
		String packageName = referenceClass.getPackage().getName();
		String path = referenceClass.getProtectionDomain().getCodeSource().getLocation().toString() + packageName+"/";
		File dir = new File(path.replaceAll("file:/", ""));
		List<Class<?>> result = new ArrayList<Class<?>>();
		File[] lstFiles = dir.listFiles();
		if (lstFiles != null) {
			for (File f: lstFiles) {
				String name = packageName+"."+f.getName().replace(".class", "");
				// exlcude the reference class and anonymous classes
				if (!name.equals(referenceClass.getName()) && !f.getName().contains("$")) {
					try {
						result.add(Class.forName(name));
					} catch (ClassNotFoundException ex) {
						throw new RuntimeException("this is probably the result of a bug in this method", ex);
					}
				}
			}
		}
		return result;
	}
}

Das Projekt hat die Main ohne package und ein Package in dem sich die Klasse ReferenceClass befindet sowie die Klassen Audi, Bmw und Porsche.
Die Ausgabe ist:
[searchplace.Audi@1b499616, searchplace.Bmw@7c1c8c58, searchplace.Porsche@36422510]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H JavaFX Warnung in package Zeile Allgemeine Java-Themen 2
jumichel Eclipse The package javax.mail is not accessible Allgemeine Java-Themen 3
M Mehrere Ressourcen in einem package ablegen Allgemeine Java-Themen 1
G Mac Package auslesen Allgemeine Java-Themen 17
F Reason: Missing Constraint: Import-Package: okhttp3.internal.http; version="0.0.0" Allgemeine Java-Themen 0
Tommy135 Input/Output Application aus Java package starten Allgemeine Java-Themen 2
J File in Package erstellen & lesen mit Programmstart in externe Projekt Allgemeine Java-Themen 3
B Maven Keycloak library wirft exceptions nach maven package Allgemeine Java-Themen 1
ReinerCoder auf Klassen innerhalb eines package zugreifen Allgemeine Java-Themen 22
T Plötzlich wird package nicht mehr gefunden Allgemeine Java-Themen 3
I Fehler beim Ant-Package erstellen mit Java 9 Allgemeine Java-Themen 1
K Classpath Alle Classen aus einem Package lesen Allgemeine Java-Themen 7
Sin137 Struktur der Klassen & Package Allgemeine Java-Themen 2
F Problem mit "package" Allgemeine Java-Themen 7
L Stack overflow bei einer endrekursiven Funktion (Anwendung: Spezialform des Package Merge) Allgemeine Java-Themen 4
D Classloader ohne Package Allgemeine Java-Themen 10
S leeres package obwohl inhalt da Allgemeine Java-Themen 53
S leeres Package nach neuinstallation des Pc Allgemeine Java-Themen 6
J Suche: Tool zum Auffinden gleichnamiger Klassen (Name und Package gleich) in unteschiedlichen JARs Allgemeine Java-Themen 5
G Gleiche Packages in verschiedenen JAR Dateien - Welches Package wird verwendet? Allgemeine Java-Themen 5
D Package switching Allgemeine Java-Themen 7
G log4j package filter Allgemeine Java-Themen 10
M Klasse aus xyz.class Datei laden / package entfernen? Allgemeine Java-Themen 4
Bastifantasti Package installieren Allgemeine Java-Themen 2
G Package / Architektur Allgemeine Java-Themen 11
J package javax.servlet does not exist Allgemeine Java-Themen 5
M Dateien aus dem Package im Jar-File rauskopieren Allgemeine Java-Themen 3
V Zugriff auf Default-Package? Allgemeine Java-Themen 6
S Package in verschiedene Projekten einbinden? Allgemeine Java-Themen 3
J Kein Zugriff auf Klassen im Default Package Allgemeine Java-Themen 8
B J-Unit Tests. Alle Tests eines Package einsammen. Allgemeine Java-Themen 4
ARadauer Package Struktur Allgemeine Java-Themen 3
G bild in package Allgemeine Java-Themen 6
G Klasse aus Package auslesen Allgemeine Java-Themen 13
V Alle Klassen eines Package auflisten? Allgemeine Java-Themen 6
G jfreechart probleme mit dem package? Allgemeine Java-Themen 2
E (einfaches) Problem mit import und package (export) Allgemeine Java-Themen 4
E Was ist "default package" in Eclipse konkret? Allgemeine Java-Themen 12
M diff package? Allgemeine Java-Themen 7
T auf Klasse in Default package zugreifen Allgemeine Java-Themen 10
G externe package Allgemeine Java-Themen 7
A Package Probleme Allgemeine Java-Themen 9
J Konstruktor-Aufruf nur aus einem bestimmten Package erlauben Allgemeine Java-Themen 5
G Suche gutes Statistik Package Allgemeine Java-Themen 2
W Package via Reflection parsen Allgemeine Java-Themen 4
minzel ActionListener aus Package Allgemeine Java-Themen 24
P alle Klassen in package auflisten Allgemeine Java-Themen 2
M JNI: nach verschieben in package UnsatisfiedLinkError Allgemeine Java-Themen 3
D Laaaange Klassennamen und Package-Pfade. Allgemeine Java-Themen 5
J Einbinden einer protected-Methode aus anderem Package Allgemeine Java-Themen 2
H .java Dateien in anderem Package Allgemeine Java-Themen 8
S javadoc: package problem Allgemeine Java-Themen 3
G package und classpath grundsatzfrage Allgemeine Java-Themen 7
N Reflection: An Package einer .class-Datei kommen Allgemeine Java-Themen 2
T Problem: Ein Package für 2 Projekte? Allgemeine Java-Themen 3
S Problem bei Umstellung von (default package) auf Packages Allgemeine Java-Themen 10
H Package name aus Class-File auslesen Allgemeine Java-Themen 11
G Java Package Allgemeine Java-Themen 2
EagleEye klassen package problem Allgemeine Java-Themen 3
C Jakarta commons package downloaden und installieren Allgemeine Java-Themen 7
L Package und Klassenname von aufrufender Klasse holen Allgemeine Java-Themen 2
Z auf static Methode aus anderen Package zugreifen? Allgemeine Java-Themen 7
H Klassen in einem Package ermitteln Allgemeine Java-Themen 6
C Problem mit Package Allgemeine Java-Themen 9
O regulärer Ausdruck zum durchsuchen eines Strings verwenden Allgemeine Java-Themen 2
Ernesto95 HTTP Mit JavaScript erzeugte dynamische Webseite auslesen und nach einem Schlüsselwort durchsuchen Allgemeine Java-Themen 6
districon Programm zum Durchsuchen von (Ebay-)Artikeln Allgemeine Java-Themen 1
Kirby.exe Filename nach bestimmtem Pattern durchsuchen Allgemeine Java-Themen 5
S Wörterliste nach Wörtern mit u durchsuchen und diese auf der Konsole ausgeben lassen Allgemeine Java-Themen 33
T Methoden Methode zum durchsuchen einer ArrayList Allgemeine Java-Themen 8
T Textarea nach nur 1 wort durchsuchen Allgemeine Java-Themen 3
F String nach Schlüsselwörtern durchsuchen und ganze Zeile ausgeben Allgemeine Java-Themen 4
M Fasta nach Mustern durchsuchen dauert zu lange Allgemeine Java-Themen 2
R HTML Tabelle durchsuchen Allgemeine Java-Themen 3
G String durchsuchen Allgemeine Java-Themen 5
S String mit Matcher.find durchsuchen und ausgeben Allgemeine Java-Themen 7
A Excel nach bestimmten Inhalt durchsuchen Allgemeine Java-Themen 8
P Ordner und Unterordner rückwärts durchsuchen Allgemeine Java-Themen 3
P Sinnfragen, um eine riesige Verzeichnisstruktur zu durchsuchen und zu verarbeiten Allgemeine Java-Themen 20
B Swing In JAR Ordner durchsuchen Allgemeine Java-Themen 2
P Ordnerstruktur nach .js-Files durchsuchen Allgemeine Java-Themen 2
S HTML-Quelltext nach bestimmter Stelle durchsuchen Allgemeine Java-Themen 2
K [Refactoring] ClassLoader Verzeichnis durchsuchen lassen Allgemeine Java-Themen 7
windl Durchsuchen eines Verzeichnisbaums Allgemeine Java-Themen 3
C C-ähnlichen Code nach speziellen Informationen durchsuchen Allgemeine Java-Themen 2
G Code nach Schleifen und Verzweigungen durchsuchen Allgemeine Java-Themen 6
A Text via RegEx durchsuchen und teile ersetzten Allgemeine Java-Themen 5
E ordner rekursiv durchsuchen Allgemeine Java-Themen 6
M Große Datei mit Regex durchsuchen Allgemeine Java-Themen 4
C Spielfeld nach Treffern durchsuchen Allgemeine Java-Themen 4
F Char-Array nach einem Wort durchsuchen! Allgemeine Java-Themen 11
P String nach ENTER durchsuchen Allgemeine Java-Themen 6
W return Collection mit schleife durchsuchen Allgemeine Java-Themen 10
L Textdatei nach Wörter durchsuchen Allgemeine Java-Themen 3
T Array durchsuchen - aber richtig Allgemeine Java-Themen 7
O PDF-Dateien bearbeiten/durchsuchen Allgemeine Java-Themen 3
B Verzeichnis durchsuchen geschwindigkeit optimieren Allgemeine Java-Themen 6
C Reguläre Ausdrücke, String rückwärts durchsuchen Allgemeine Java-Themen 6
hdi text durchsuchen -> satzzeichen entfernen Allgemeine Java-Themen 5
T Webseiten durchsuchen und Bilder downloaden Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben