Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    problemi creazione jar!! HELP

    salve a tutti...sembrerà assurdo ma la creazione del jar e' sempre stato il mio tallone d'achille!...Sto realizzando un progetto sulla base del server Flash per lo streaming "red5". Il tutto funziona senza problemi...fin quando ovviamente non provo a creare il jar con fatjar! a quel punto non mi viene caricato più nulla a partire dalla classe principale e non ne capisco il motivo! Praticamente, si avvia e immediatamente nella finestra di log compare l'ultima riga "Startup WebServer completato in " con tutti i valori settati a null! spero che qualcuno mi possa essere d'aiuto, posto il codice della classe principale di avvio del server, dalla quale vengono caricati tutti i file di configurazione:

    codice:
    package org.red5.server;
    
    import org.red5.server.api.Red5;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.util.Properties;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.context.access.ContextSingletonBeanFactoryLocator;
    
    /**
     * Entry point dal quale il i file di configurazione del server vengono caricati:
     * -----CLASSE DI PARTENZA-----
     */
    public class Standalone {
     
        /**
         * Inizializza Logging.
         */
        protected static Logger log = LoggerFactory.getLogger(Standalone.class);
    
    	protected static String red5Config = "red5.xml";
    
    
    	/**
         * Re-throws exception
         */
    	public static void raiseOriginalException(Throwable e) throws Throwable {
    		// Cerca root exception
    		while (e.getCause() != null) {
    			e = e.getCause();
    		}
    		throw e;
    	}
    	
    	/**
    	 * Entry point per l'avvio del webserver in Standalone
    	 */
    	public void main(String[] args) throws Throwable {	
    		
    		if (args.length == 1) {
    			red5Config = args[0];
    		}
    
    		long time = System.currentTimeMillis();
    
    		log.info("Avvio in corso: {}", Red5.getVersion());
    		log.info("Caricamento global context da: {}", red5Config);	    
    	    
    	String classpath = System.getProperty("java.class.path");
            // ricerca delle proprietà del root system
            String root = System.getProperty("red5.root");
            String conf;
            if (root != null) {
                conf = root + "/conf";
            } else {
        		// Rileva il root di configurazione del webserver e lo imposta come proprietà di sistema
        		File fp = new File(red5Config);
        		fp = fp.getCanonicalFile();
        		if (!fp.isFile()) {
        			// Il file ottenuto non esiste, cercalo nel classpath
        			String[] paths = classpath.split(System
        					.getProperty("path.separator"));
        			for (String element : paths) {
        				fp = new File(element + '/' + red5Config);
        				fp = fp.getCanonicalFile();
        				if (fp.isFile()) {
        					break;
        				}
        			}
        		}
        
        		if (!fp.isFile()) {
        			throw new Exception("impossibile trovare il file di configurazione"
        					+ red5Config + " nel tuo classpath " + classpath);
        		}
        
    		System.setProperty("red5.conf_file", red5Config);
        		root = fp.getAbsolutePath();
        		root = root.replace('\\', '/');
        		int idx = root.lastIndexOf('/');
        		conf = root.substring(0, idx);
    
                // Memorizza la directory root del webserver
        		idx = conf.lastIndexOf('/');
        		root = conf.substring(0, idx);
        		if (System.getProperty("file.separator").equals("/")) {
        			root = '/' + root;
        		}
        
                // Imposta il root del webserver come variabile d'ambiente
                System.setProperty("red5.root", root);
        		log.info("Imposta il percorso root del WebServer in {}", root);
    
        	}
    		System.setProperty("red5.config_root", conf);
    		log.info("Imposta il percorso di configurazione principale in {}", conf);                    
    
    		// Setup le proprietà di sistema in moda da poter essere elaborate da Jetty
    		Properties props = new Properties();
    
            // Caricamento delle proprietà
            props.load(new FileInputStream(conf + "/red5.properties"));
    
            for (Object o : props.keySet()) {
                String key = (String) o;
                if (key != null && !key.equals("")) {
                    System.setProperty(key, props.getProperty(key));
                }
            }
    
    		try {
    			ContextSingletonBeanFactoryLocator.getInstance(red5Config)
    					.useBeanFactory("red5.common");
    		} catch (Exception e) {
    			raiseOriginalException(e);
    		}
    
    		long startupIn = System.currentTimeMillis() - time;
    		log.info("Startup WebServer completato in : {} ms", startupIn);		
    
    	}
    
    }
    NB:non badate al fatto che nel main non compaia lo "static" perche' la prima finestra del programma e' in realtà un form che in seguito alla pressione del pulsante "start" richiama questa classe per caricarla!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,323

    Moderazione

    Suggerisco la lettura del Regolamento interno. in particolare per quanto riguarda i titoli delle discussioni, il posting del codice con gli appositi tag ed indendazione e delle informazioni rilevanti.

    Correggo titolo e posting del codice.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    C'e' qualche amministratore responsabile su questo forum che mi sappia rispondere? Anche per dirmi "non saprei aiutarti"? Su questa pagina sembra che tutto venga lasciato all'incuria....

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,323
    Originariamente inviato da pepsidj_87
    C'e' qualche amministratore responsabile su questo forum che mi sappia rispondere? Anche per dirmi "non saprei aiutarti"? Su questa pagina sembra che tutto venga lasciato all'incuria....
    Al di là del fatto che gli "amministratori" hanno altri compiti, non quello di rispondere alle discussioni. Se ti riferisci ai moderatori, come me, anche noi abbiamo per lo più altri compiti, anche se spesso rispondiamo alle discussioni degli utenti.

    C'è da dire una cosa: questo è un forum, non un centro di assistenza, quindi le risposte arrivano gratuitamente da chi, nel tempo libero, sfoglia il forum. Non c'è nessuna incuria, anzi, è uno dei forum più attivi a livello italiano... solo che devi avere pazienza e, casomai, arricchire di informazioni il quesito che, probabilmente, risulta poco chiaro.

    Altra questione: per la creazione dei file JAR c'è un apposito tool messo a disposizione dall'ambiente standard di Java (l'SDK). Il tool si chiama JAR e il 99% dei programmatori usa quello. Da quel che so, ciò che stai usando tu è un modulo di Eclipse (che io, personalmente, non uso, non conosco e non ho alcuna intenzione di imparare, dato che il solo tool del sdk è tutto ciò che basta).

    Forse dovresti prendere in considerazione l'idea di usare il tool "jar" da riga di comando: creare dei file JAR non è certo un grosso problema e gli ambienti di sviluppo (come pure Eclise) lo fanno già in automatico.

    Aggiungo che, dato che hai specificato che la classe in questione viene richiamata da un'altra (non avendo un main proprio), non è cosa semplice per gli utenti del forum effettuare un test, dato che mancano completamente gli elementi essenziali affinchè possa essere creato un JAR: la classe principale.


    Prova a postare la struttura del file JAR che viene prodotto usando "Fat Jar", senza tralasciare il file di MANIFEST.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.