Abhängigkeiten von Klassen ermitteln

dandiii

Grünschnabel
Hallo,

wie kann ich von einer Klasse die davon abhängigen Klassen bzw. dafür benötigten auslesen? :confused:

Ein Beispiel zum besseren Verständnis der Frage:

Code:
public class TestFrame extends JFrame {
  public TestFrame(){
    // some code
    this.add(new TestButton());
    // some code
  }
}

dazugehörige Klasse TestFrame.class

Code:
public class TestButton extends JButton {
  public TestButton (){
    // some code
    this.addActionListener( new ActionListener(){
      public void actionPerformed(ActionEvent e) {
        // some code
      }
    });
    // some code
  }
}

dazugehörige Klassen:
TestButton.class und
TestButton$1.class (innere Klasse wegen "new ActionListener() ... ")

Code:
public class A{
  public static main(String[] args){
    TestFrame testFrame = new TestFrame();
    // wie bekomme ich hier alle für testFrame benötigten Klassen (TestButton.class und TestButton$1.class)
  }
}

Ich hab schon mit Reflection versucht, hier kann ich aber nur:
TestFrame.class.getFields()
oder ähnliches abrufen, welche mir die Attribute der Klasse TestFrame liefert, der TestButton ist jedoch nicht wirklich ein Attribut...

mir raucht schon der Kopf deswegen... :(
 
Hallo Thomas,

Leider keine Lösung...
oder ich bin nicht schlau genug um die Links zu verstehen... :suspekt:

Mein ursprüngliches Problem ist eigentlich, dass ich eine jar-Datei extrahieren möchte.
Diese jar Datei soll aus einer Quelldatei generiert werden.

Ich arbeite hierbei mit JarOutputStream, leider muss ich hier jede Klasse einzeln mit jarOutputStream.putNextEntry(zipEntry); eintragen (zum Beispiel TestFrame von oben).

Außerdem benötige ich die Klassen von der die erste Klasse abhängt und folgenden ...

wie schaffe ich das?

danke

Andi
 
Du willst also ein Jar erstellen, in welchem nur Klassen drin sind, die auch tatsächlich benötigt werden?
 
Richtig.

Und ich weiß nur die "MainKlasse" in der die main liegt.

Existiert hier vielleicht ein anderer Ansatz als mit Hilfe des JarOutputStreams?
 
Mir ist absolut nicht klar warum man sowas tun müssen sollte...

Wenn du die Sourcen hast, könntest du halt nach dem Imports schauen, ansonsten müsste man durch das Class-File gehen und schauen was alles benutzt wird.

Innere Klasse kann man immerhin über Reflection rausfinden.

Auf jeden Fall können die Tools die Tom gepostet hatte sowas scheinbar. Zumindest dieses GenJar hab ich mir angeschaut (der letzte).
The <genjar> task is designed to make Jar creation as easy as possible. You give it the root classes (i.e. entry points) of your application and it will determine all other class files that need to be included in the jar.

Dort ist auch beschrieben wie man das mit Ant benutzt. Du kannst es aber auch so aufrufen: http://genjar.sourceforge.net/manual.html
 
Zuletzt bearbeitet:
Zurück