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

    "Exception in thread "main" java.lang.NoClassDefFoundError..."

    ciao a tutti,
    in fase di lancio del file Esempio.jar viene fuori questo errore

    codice:
    "Exception in thread "main" java.lang.NoClassDefFoundError: Esempio Caused by: java.lang.ClassNotFoundException: Esempio        ... Could not find the main class: Esempio . Program will exit."
    1)nella variabile d'ambiente classpath è già settata la dir corrente .

    2)contenuto del file manifest:
    codice:
    Manifest-Version: 1.0
    Created-By: 1.4.1_02 (Sun Microsystems Inc.)
    Main-Class: Esempio 
    Class-Path: .
    3)comandi che eseguo: javac Esempio.java -deprecation
    jar cfm Esempio.jar manifest *.class
    java -jar Esempio.jar

    4) i file class e il file java sono tutti nella stessa cartella


    Da cos'altro dipende il problema?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Quasi certamente hai usato la clausola package nella classe Esempio.
    Fai una ricerca nel forum per NoClassDefFoundError e per package.

    E' un errore comune ed è già stato trattato altre volte.


    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
    non ho inserito nessuna clausola package nella classe Esempio e nel forum non riesco a trovare i thread corrispondenti a NoClassDefFoundError

  4. #4
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Il formato è i comandi mi sembrano corretti... comunque ho fatto una prova sulla mia macchina e a me funziona bene.

    Hai provato a spacchettare il .jar per vedere cosa c'è effettivamente dentro?
    In alternativa, prova a utilizzare al posto della tua una semplice classe Esempio.java che esegue solo una System.out e verifica se così ti segnala lo stesso problema

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    L'eccezione è chiara: non trova la classe Esempio.
    Questo genere di eccezione, solitamente, è dovuto ad una scorretta nomenclatura della classe all'interno del manifest, ma, come ho detto prima, questo può accadere in presenza dei package.

    Prova a postare la tua classe Esempio perchè io ho fatto esattamente le tue stesse identiche operazioni senza alcun errore.


    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

  6. #6
    Riporto di seguito il codice della classe Esempio:

    codice:
    import javax.swing.*;
    import javax.swing.text.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.JOptionPane;
    
    public class Esempio extends JFrame implements ActionListener{    
    	
    public static void main (String [] args){
    	       Esempio Esp = new Esempio();
    	      
    	       Esp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	       Esp.setVisible(true);
    	       Esp.toFront();
    }
    	
        private JComboBox jcbox_giorno;
    	private JComboBox jcbox_mese;
    	private JTextField jtf_anno;
    	private String[] items_giorno;
    	private String[] items_mese;
    	protected final Font font = new Font("Verdana",Font.PLAIN,10);
    	private String data_Esempio;
    	
        public Esempio(){        
        	super();
            setTitle("Esempio");
    
    		items_giorno = new String[32];
    		items_giorno[0]= "";
    		items_giorno[1]= "01";
    		items_giorno[2]= "02";
    		items_giorno[3]= "03";
    		items_giorno[4]= "04";
    		items_giorno[5]= "05";
    		items_giorno[6]= "06";
    		items_giorno[7]= "07";
    		items_giorno[8]= "08";
    		items_giorno[9]= "09";
    		items_giorno[10]= "10";
    		items_giorno[11]= "11";
    		items_giorno[12]= "12";
    		items_giorno[13]= "13";
    		items_giorno[14]= "14";
    		items_giorno[15]= "15";
    		items_giorno[16]= "16";
    		items_giorno[17]= "17";
    		items_giorno[18]= "18";
    		items_giorno[19]= "19";
    		items_giorno[20]= "20";
    		items_giorno[21]= "21";
    		items_giorno[22]= "22";
    		items_giorno[23]= "23";
    		items_giorno[24]= "24";
    		items_giorno[25]= "25";
    		items_giorno[26]= "26";
    		items_giorno[27]= "27";
    		items_giorno[28]= "28";
    		items_giorno[29]= "29";
    		items_giorno[30]= "30";
    		items_giorno[31]= "31";
    		
    		items_mese = new String[13];
    		items_mese[0]= "";
    		items_mese[1]= "01";
    		items_mese[2]= "02";
    		items_mese[3]= "03";
    		items_mese[4]= "04";
    		items_mese[5]= "05";
    		items_mese[6]= "06";
    		items_mese[7]= "07";
    		items_mese[8]= "08";
    		items_mese[9]= "09";
    		items_mese[10]= "10";
    		items_mese[11]= "11";
    		items_mese[12]= "12";
             
    		LimitedStyledDocument lsd_anno = new LimitedStyledDocument(4);
    		
    		JPanel panelGeneral = new JPanel();
    		setFont(font);
    		JPanel panelSub = new JPanel();
    		JLabel testo = new JLabel("data:");
    		testo.setFont(font);
    		jcbox_giorno = new JComboBox(items_giorno);
    		jcbox_giorno.setFont(font);
    		JLabel testo2 = new JLabel("/");
    		testo2.setFont(font);
    		jcbox_mese = new JComboBox(items_mese);
    		jcbox_mese.setFont(font);
    		JLabel testo3 = new JLabel("/");
    		testo3.setFont(font);
    		jtf_anno = new JTextField(lsd_anno,"",4);
    		jtf_anno.setFont(font);
    		
    		JButton jb_generaFlusso = new JButton("Genera il file");
    		jb_generaFlusso.addActionListener(new ActionListener(){
    			public void actionPerformed (ActionEvent e) {
    				Object Obj_getGiorno = jcbox_giorno.getSelectedItem();
    				String getGiorno = ""+Obj_getGiorno;
    				Object Obj_getMese = jcbox_mese.getSelectedItem();
    				String getMese = ""+Obj_getMese;
    				String getAnno = jtf_anno.getText();
    
    				if(getGiorno.equals("") || getMese.equals("") || getAnno.equals("")){
    					JOptionPane.showMessageDialog(null,"Compilare tutti i campi","A V V I S O",JOptionPane.WARNING_MESSAGE);
    				}else{
    					data_Esempio = getGiorno + "/" + getMese + "/" + getAnno;
    					System.out.println(data_Esempio);
    				}
    			}});
    		
    		panelSub.setLayout(new FlowLayout(FlowLayout.LEFT));
    		panelSub.add(testo);
    		panelSub.add(jcbox_giorno);
    		panelSub.add(testo2);
    		panelSub.add(jcbox_mese);
    		panelSub.add(testo3);
    		panelSub.add(jtf_anno);
    		panelSub.add(jb_generaFlusso);
    		
    		panelGeneral.setLayout(new BorderLayout());
    		panelGeneral.add(BorderLayout.NORTH,panelSub);
    		setContentPane(panelGeneral);
    		setSize(400,200);
    		pack();
        }
        
    	public void actionPerformed(ActionEvent e) {
    		
    	}
    	
    	class LimitedStyledDocument extends DefaultStyledDocument {
    		int maxCharacters;
    		public LimitedStyledDocument(int maxChars) {
    			maxCharacters = maxChars;
    		}
    		public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
    			if ((getLength() + str.length()) <= maxCharacters)
    				super.insertString(offs, str, a);
    			else
    				Toolkit.getDefaultToolkit().beep();
    		}
    	}
        
    }

  7. #7
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Ci sono dei problemi con la versione che dichiari nel file manifest (penso con le inner classes): impostando ad esempio a 1.5 nel mio ambiente funziona correttamente

  8. #8
    ho risolto cambiando l'ordine delle righe del file manifest così:

    codice:
    Manifest-Version: 1.0
    Class-Path: .
    Main-Class: Esempio
    Created-By: 1.4.1_02 (Sun Microsystems Inc.)

    grazie a tutti

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.