tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
1097
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von tinella
    tinella tinella ist offline Mitglied Gold
    Registriert seit
    Apr 2004
    Ort
    Schweiz
    Beiträge
    201
    Hallo Leute

    Ich habe bis jetzt einen Suchalgorithmus der mir einen Verzeichnisbaum als Tree anzeigt.
    Da ich aber einen JarBrowser implementiere, muss ich die Jars mit Inhalt in den betreffenden Verzeichnissen anzeigen!

    Mein Suchalgorithmus filtert nach JarFiles und speichert diese in einen Vector:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    public void recursiveJarSearch(String dirPath, Vector vecJarFile) {
            File resultFile = new File(dirPath);
            String[] arrContent = resultFile.list();
     
            for (int j = 0; j < arrContent.length; j++) {
                try {
                    String strSeparator = String.valueOf(File.separator);
                    String path = dirPath + strSeparator + arrContent[j];
                    File dir = new File(path);
     
                    [B]if (arrContent[j].endsWith(".jar"))[/B] {
                        System.out.println("JarFile: " + path);
                        vecJarFile.addElement(path);
                        // JarFileOpener.searchClasses(); aufrufen!
     
                    } else if (dir.isDirectory()) {
                        String[] splittedStrArr = (path.split("\\\\|/"));
                        // call show() and give show() the splitted element
                        makeObject(splittedStrArr);
                        recursiveJarSearch(path, vecJarFile);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                    continue;
                }
            }
        }

    Ich hab nirgends was geeignetes gefunden - wie kann ich jetzt von diesem String die Jars auspacken?
    Ich habe gedacht, dass ich eine Klasse
    Code :
    1
    
    JarFileOpener
    erstelle, und in dieser das dann entpacke und in meiner vorhandenen Klasse TreeMaker

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    
    /**
     * Makes the Tree. Demonstrates the TreeViewer and shows the drives,
     * directories, and files on the system.
     */
    public class TreeMaker extends ApplicationWindow{
        //private TreeContentElement tce;
        //private TreeLabelProvider tlp;
        private SearchOverDirectories search;
        public ImageRegistry imageRegistry;
        
        /**
         * Treemaker constructor.
         */
        public TreeMaker(Shell shell) {
            super(shell);
            search = new SearchOverDirectories();
            search.recursiveJarSearch(search.rootDir, search.getVecJarFile());
        }
        
        public static void main(String[] args) {
            ApplicationWindow treeMaker = new TreeMaker(null);
            
            treeMaker.setBlockOnOpen(true);
            treeMaker.open();
            Display.getCurrent().dispose();
        }
     
        // TODO: Weshalb baue ich den Tree mit Objekten auf?
        protected Control createContents(Composite parent) {
            Composite composite = new Composite(parent, SWT.NONE);
            composite.setLayout(new GridLayout(1, false));
            
            // Create the tree viewer to display the file tree
            final TreeViewer treeViewer = new TreeViewer(composite);
            treeViewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
            
            treeViewer.setContentProvider(search.rootElement);
            treeViewer.setLabelProvider(new TreeLabelProvider());
            
            treeViewer.setInput("root"); // pass a non-null that will be ignored
            getShell().setText("Jar Browser JB");
            parent.setSize(640, 480);
            
            return parent;
            // return parent;
        }
    }

    statt nur die Verzeichnis aufbaue auch noch die JarFiles!


    MEINE FRAGE:

    - wie entpacke ich die Jars anhand meinen Infos im Array?
    - wie stelle ich das Ergebnis anhand meiner Klasse TreeMaker dar?

    Sorry der lange Post...
    Wenn jemand L&Z hat, wäre ich um eine Antwort auch mit Verweis auf ein anderes Beispiel sehr sehr dankbar!

    Tinella
     

  2. #2
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  3. #3
    Avatar von tinella
    tinella tinella ist offline Mitglied Gold
    Registriert seit
    Apr 2004
    Ort
    Schweiz
    Beiträge
    201
    Hi Leute

    Ein Object in ein File casten - geht das überhaupt?
    (in meinem Fall habe ich den Typ des Objects selbst gemacht (TreeContentElement))

    Ich habe einen Vector jarVec, gefüllt mit Objekten.
    Da ich dem neuen JarFile Objekt aber ein File übergeben möchte, caste ich den Inhalt des Vectors (siehe unten).

    Bevor ich entries aufrufe - muss ich da noch was anderes machen?

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
        public void extractJar() throws IOException{
            File jar;
            for (int i = 0; i < jarVec.size(); i++) {
                jar = (File)jarVec.elementAt(i);
                JarFile jarFile = new JarFile(jar);
                System.out.println("jarFile entries: " + jarFile.entries());
                
            }
        }
     

  4. #4
    Avatar von schnuffie
    schnuffie schnuffie ist offline Mitglied Platin
    Registriert seit
    Oct 2004
    Ort
    Ober-Roden (Hessen)
    Beiträge
    725
    Du durchläufst die Enumeration und zeigst z.B. den Name als neues Blatt im Tree an.
    Falls Du Entpacken willst, dann etwa so:

    Code :
    1
    
    JarFile jarFile = new JarFile("webnobis.jar");JarEntry jarEntry = new JarEntry("WebNobis.java");InputStream in = jarFile.getInputStream(jarEntry);FileOutputStream out = new FileOutputStream(jarEntry.getName());int t;while((t = in.read()) != -1)  out.write(t);}
     
    CU schnuffie

    Fragliche Fragen stellende Fragensteller sind für verantwortungslose Antworten antwortender verantwortlicher Antworter selbst verantwortlich.

Ähnliche Themen

  1. JARs des core-JRE übersteuern?
    Von -ben- im Forum Java
    Antworten: 0
    Letzter Beitrag: 09.12.09, 14:20
  2. Problem mit JARS in WEB-INF/LIB
    Von Frozenlife im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 1
    Letzter Beitrag: 13.04.08, 15:04
  3. Maven und jars
    Von Sirakov im Forum Java
    Antworten: 5
    Letzter Beitrag: 01.04.08, 14:19
  4. jars nachladen?
    Von Smily0412 im Forum Java
    Antworten: 1
    Letzter Beitrag: 13.02.08, 15:58
  5. Name des ausführenden Jars
    Von Moltar im Forum Java
    Antworten: 2
    Letzter Beitrag: 31.05.07, 13:09