Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    207

    Strano comportamento tra versioni differenti di Eclipse

    Salve, vorrei chiedervi se qualcuno di voi sa spiegarmi come mai se carico il mio progetto java in due versioni differenti di Eclipse ottengo un comportamento diverso. Mi spiego meglio:

    Ho sviluppato il mio progetto con Eclipse SDK Version: 3.2.1 e li tutto funziona perfettamente.

    Ho importato successivamente il progetto nell'ultima versione di Eclipse SDK e ho riscontrato un problema che sulla precedente non avevo. Il mio progetto contiene un'interfaccia in cui tramite un tasto vado ad aprire una JFileChooser , nell'ultima versione di Eclipse questa cosa mi genera un errore, cioè non appena clicco sul tasto mi da un errore di Nullpointer exception che con la precedente versione di Eclipse non dava (andava tutto perfettamente).

    Come mai questa cosa :O???

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Strano comportamento tra versioni differenti di Eclipse

    Originariamente inviato da jin85
    Il mio progetto contiene un'interfaccia in cui tramite un tasto vado ad aprire una JFileChooser , nell'ultima versione di Eclipse questa cosa mi genera un errore, cioè non appena clicco sul tasto mi da un errore di Nullpointer exception che con la precedente versione di Eclipse non dava (andava tutto perfettamente).
    Prima di dare la "colpa" ad Eclipse, bisognerebbe vedere:
    a) Quale è il codice interessato (perlomeno le parti che possono chiarire il contesto)
    b) Quale è il JDK e il runtime Java usato
    c) Eventualmente (anche se potrebbe non centrare nulla) quale è il Look&Feel usato

    Altrimenti ci vuole Mago Merlino ..
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    207
    per il punto b) dove vedo il runtime java utilizzato?? e quale dovrebbe essere il rapporto tra jdk e runtime java?

    il codice che mi ha dato problemi è questo:

    codice:
    public class InterfacciaGestCarPogress extends javax.swing.JFrame {
    	private JPanel mainPanel;
    	private JButton ApriButton;
    	private JProgressBar ProgressBarUpdateDB;
    	private JProgressBar ProgressBar;
    	private JPanel PanelProgressBar;
    	private JComboBox ComboBoxAccount;
    	private JLabel LabelAccount;
    	private JButton ButtonAggiornaDB;
    	private JLabel LabelAggiornaDB;
    	private JPanel PanelAggiornaDB;
    	private JButton ButtonDos;
    	private JLabel LabelDos;
    	private JPanel PanelDos;
    	private JTextField TextFieldPath;
    	private JTextField TextFieldProprietario;
    	private JLabel LabelProprietario;
    	private JPanel PanelProprietario;
    	private JLabel FileChooserLabel;
    	private JPanel PanelScegliFile;
    	private String account="";
    	
    
    	/**
    	* Auto-generated main method to display this JFrame
    	*/
    	public static void main(String[] args) {
    		InterfacciaGestCarPogress inst = new InterfacciaGestCarPogress();
    		inst.setVisible(true);
    	}
    	
    	public InterfacciaGestCarPogress() {
    		super();
    		initGUI();
    		setTitle("GDOC - Caricamento Aziende");
    		setResizable(false);
    	}
    	
    	
    	
    	
    	private void initGUI() {
    		try {
    			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    			{
    				mainPanel = new JPanel();
    				getContentPane().add(mainPanel, BorderLayout.CENTER);
    				mainPanel.setLayout(null);
    				{
    					PanelScegliFile = new JPanel();
    					mainPanel.add(PanelScegliFile);
    					PanelScegliFile.setLayout(null);
    					PanelScegliFile.setBounds(21, 28, 448, 112);
    					PanelScegliFile.setBorder(BorderFactory.createTitledBorder("Seleziona azienda da caricare"));
    					{
    						ApriButton = new JButton();
    						PanelScegliFile.add(ApriButton);
    						ApriButton.setText("Apri File");
    						ApriButton.setBounds(336, 28, 91, 28);
    						ApriButton.addActionListener(new java.awt.event.ActionListener() {
    				            public void actionPerformed(java.awt.event.ActionEvent evt) {    
    				            	
    				            	File dir = new File ("W:\\");
    				            	JFileChooser fileChooser = new JFileChooser();
    				            	fileChooser.setCurrentDirectory(dir);
    				            	fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
    				            	
    				            	int n = fileChooser.showOpenDialog(InterfacciaGestCarPogress.this);
    				            	
    				            	File selectDir = fileChooser.getSelectedFile();
    				            	
    				            	
    				            		
    									TextFieldPath.setText(selectDir.getAbsoluteFile().toString());
    				
    				            }
    				        });
    					}
    					{
    						FileChooserLabel = new JLabel();
    						PanelScegliFile.add(FileChooserLabel);
    						FileChooserLabel.setText("Seleziona l'azienda da caricare");
    						FileChooserLabel.setBounds(21, 28, 224, 28);
    					}
    					{
    						TextFieldPath = new JTextField();
    						PanelScegliFile.add(TextFieldPath);
    						TextFieldPath.setBounds(21, 63, 406, 28);
    						
    					}
    
    				}
    				{
    					PanelProprietario = new JPanel();
    					mainPanel.add(PanelProprietario);
    					PanelProprietario.setLayout(null);
    					PanelProprietario.setBounds(21, 154, 448, 98);
    					PanelProprietario.setBorder(BorderFactory.createTitledBorder("Seleziona codice azienda e account personale"));
    					{
    						LabelProprietario = new JLabel();
    						PanelProprietario.add(LabelProprietario);
    						LabelProprietario.setText("Digita il codice dell'azienda");
    						LabelProprietario.setBounds(14, 28, 168, 28);
    					}
    					{
    						TextFieldProprietario = new JTextField();
    						PanelProprietario.add(TextFieldProprietario);
    						TextFieldProprietario.setBounds(252, 28, 175, 28);
    					}
    					{
    						LabelAccount = new JLabel();
    						PanelProprietario.add(LabelAccount);
    						LabelAccount.setText("Seleziona account");
    						LabelAccount.setBounds(14, 63, 126, 28);
    
    					}
    					{
    						Class.forName("oracle.jdbc.driver.OracleDriver");
    						String url = "jdbc:oracle:thin:@//lnxarte02:1521/ARTE";
    						Connection conn = DriverManager.getConnection(url,"dct","dct");
    						Statement stmt = conn.createStatement();
    						ResultSet rset =stmt.executeQuery("select * from dct_users order by user_name");
    						
    						
    						
    						ComboBoxModel ComboBoxAccountModel = new DefaultComboBoxModel(
    							new String[] {"               ---------Seleziona account---------"});
    						ComboBoxAccount = new JComboBox();
    						PanelProprietario.add(ComboBoxAccount);
    						ComboBoxAccount.setModel(ComboBoxAccountModel);
    						ComboBoxAccount.setBounds(154, 63, 273, 28);
    						
    						while (rset.next()) {
    							
    							 ComboBoxAccount.addItem(rset.getString(1));
    					         
    					    }
    					    stmt.close();
    					    ComboBoxAccount.addActionListener(new java.awt.event.ActionListener() {
    				            public void actionPerformed(java.awt.event.ActionEvent evt) {     
    				            	
    				            	account = ComboBoxAccount.getSelectedItem().toString();
    				            	//System.out.print(account);
    				            }
    				        });
    					   
    					}
    				}
    				{
    					PanelDos = new JPanel();
    					mainPanel.add(PanelDos);
    					PanelDos.setLayout(null);
    					PanelDos.setBounds(21, 273, 448, 77);
    					PanelDos.setBorder(BorderFactory.createTitledBorder("Carica azienda"));
    					{
    						LabelDos = new JLabel();
    						PanelDos.add(LabelDos);
    						LabelDos.setText("Clicca per caricare");
    						LabelDos.setBounds(14, 28, 133, 28);
    					}
    					{
    						ButtonDos = new JButton();
    						PanelDos.add(ButtonDos);
    						ButtonDos.setText("Esegui");
    						ButtonDos.setBounds(154, 28, 91, 28);
    						ButtonDos.addActionListener(new java.awt.event.ActionListener() {
    				            public void actionPerformed(java.awt.event.ActionEvent evt) {    
    				            	
    				            	setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
    				            	ButtonDos.setEnabled(false);
    				         
    				                ProgressBarStepInterfaccia process = new ProgressBarStepInterfaccia(ProgressBar,TextFieldPath.getText(),TextFieldProprietario.getText(),account);
    				                process.start();
    				                
    				            	
    				            	setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
    							    ButtonDos.setEnabled(true);	
    				              
    				            }
    				        });
    					}
    					{
    						ProgressBar = new JProgressBar(0,3);
    						PanelDos.add(ProgressBar);
    						ProgressBar.setBounds(259, 28, 175, 28);
    						ProgressBar.setStringPainted(true);
    					}
    				}
    				{
    					PanelAggiornaDB = new JPanel();
    					mainPanel.add(PanelAggiornaDB);
    					PanelAggiornaDB.setLayout(null);
    					PanelAggiornaDB.setBounds(21, 371, 448, 77);
    					PanelAggiornaDB.setBorder(BorderFactory.createTitledBorder("Aggiorna il sistema"));
    					{
    						LabelAggiornaDB = new JLabel();
    						PanelAggiornaDB.add(LabelAggiornaDB);
    						LabelAggiornaDB.setText("Clicca per aggiornare");
    						LabelAggiornaDB.setBounds(7, 35, 140, 28);
    					}
    					{
    						ButtonAggiornaDB = new JButton();
    						PanelAggiornaDB.add(ButtonAggiornaDB);
    						ButtonAggiornaDB.setText("Aggiorna");
    						ButtonAggiornaDB.setBounds(154, 35, 91, 28);
    						ButtonAggiornaDB.addActionListener(new java.awt.event.ActionListener() {
    				            public void actionPerformed(java.awt.event.ActionEvent evt) {
    				            	
    				            	try {
    									Class.forName("oracle.jdbc.driver.OracleDriver");
    								} catch (ClassNotFoundException e) {
    									// TODO Auto-generated catch block
    									e.printStackTrace();
    								}
    								String url = "jdbc:oracle:thin:@//lnxarte02:1521/ARTE";
    								try {
    									Connection conn = DriverManager.getConnection(url,"dct","dct");
    									Statement stmt = conn.createStatement();
    									ResultSet rset =stmt.executeQuery("select id_soggetto from anag_soggetti where id_soggetto="+TextFieldProprietario.getText());
    								    if (rset.next()){
    								    	
    								    	ProgressBarForUpdateDb process = new ProgressBarForUpdateDb(ProgressBarUpdateDB,TextFieldProprietario.getText(),account);
    						                process.start();
    								    } else {
    								    	
    								    			Component frame = null;
    												JOptionPane.showMessageDialog(frame,
    								    		    "Questa azienda non è presente nel database",
    								    		    "Errore azienda",
    								    		    JOptionPane.ERROR_MESSAGE);
    
    								    }
    								} catch (SQLException e) {
    									// TODO Auto-generated catch block
    									e.printStackTrace();
    								}
    
    				            }
    				        });
    					}
    					{
    						ProgressBarUpdateDB = new JProgressBar(0,4);
    						PanelAggiornaDB.add(ProgressBarUpdateDB);
    						ProgressBarUpdateDB.setBounds(259, 35, 175, 28);
    						ProgressBarUpdateDB.setStringPainted(true);
    					}
    				}
    
    			}
    			pack();
    			setSize(500, 500);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		
    		
    	}
    	
    	
    	
    }
    Io non do la colpa ad Eclipse, però questo inconveniente è venuto fuori nel momento in cui ho importato le classi nella nuova versione di Eclipse, con la vecchia versione andava tutto perfettamente.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    ho capito, ma su quale riga hai la NullPointerException?
    Continuiamo a cercare poteri da mago per capire dove è l'errore? o devo spulciarmi tutto il codice per capirlo?

    Gli IDE sono strumenti a SUPPORTO del programmatore, ciò significa che devi poter fare tutto senza l'uso dell'IDE.
    Per cui compila (magari con maven o script ant e non ti flagelli) il tuo progetto senza l'IDE ed eseguilo: se l'errore è nel codice si ripresenta anche in questo caso.
    Se l'errore non si presenta allora probabile sia successo qualcosa nell'aggiornamento (cosa che mi sembra comunque difficile).

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    207
    ho già compilato il mio progetto lanciandolo da riga di comando in dos e l'errore si ripresenta. Il numero di riga in particolare era la 108, solo che questo errore me lo dava a lavoro, qui a casa ho solo i sorgenti, non posso ricompilare il progetto e vedere esattamente su cosa dava l'errore, perchè ho bisogno di montare altre cose che sul pc di casa non ho. io comunque ricordo che l'errore era su :

    TextFieldPath.setText(selectDir.getAbsoluteFile(). toString());

    questa istruzione la effettuo nel listener del button "ApriButton" .
    Tramite il bottone ApriButton, cliccandoci su dovrebbe visualizzarmi una JFileChooser che però non apre e mi restituisce quell'errore.

    Ma quello che continuo a non capire è come mai nella versione precedente di Eclipse mi andava tutto bene..la JFileChooser veniva aperta e non avevo nessun tipo di problema. Non è che cambiando versione qualcosa a livello di settaggi di JDK o java runtime sia cambiata?

    Cioè quello che dico io se era problema di codice sia sulla vecchia versione di Eclipse che sulla nuova doveva darmi l'errore quando eseguivo...e invece no..solo sulla nuova..mah..

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    TextFieldPath.setText(selectDir.getAbsoluteFile(). toString());

    qualcosa qui dentro è null:

    1. TextFieldPath
    2. selectDir

    quindi fai una cosa bella, metti un bel breakpoint (o una stampa) e fai vedere quanto valgono prima di questa istruzione le due variabili.

    Cambiando versione di eclipse hai i settaggi di default, ma a meno che non hai sul tuo stesso computer diverse versioni del jdk, questo non ti crea problemi. Controlla le impostazioni dell'IDE per sicurezza.

    Ma un campanello d'allarme dovresti averlo quando mi dici che eseguendo a riga di comando, senza l'IDE, l'errore si ripresenta: dunque se fosse qualcosa legato all'IDE, non credi sparirebbe quando compili ed esegui da dos? Il fatto che l'errore si presenti anche in quel caso indica appunto che c'è un errore nel codice (come in effetti pensavo)

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    207
    ok..ma ancora non capisco come mai eseguendo il progetto con la vecchia versione di eclipse tutto filava liscio...se era una questione di errore nel codice anche li nel momento in cui cliccavo sul bottone mi doveva dare l'errore..e invece nulla..tutto filava liscio...la JFileChooser veniva aperta, io selezionavo il mio file e tutto proseguiva nella normalità..è questa l'anomalia che non mi spiego.


    Quell'istruzione li non fa altro che selezionare la directory che ho scelto tramite la JFileChooser e mmettermi il path della directory nella TextFieldPath.

    NullPointerException è naturale che mi viene fuori, perchè quando clicco sul bottone ApriButton non mi si apre la JFileChooser e quindi selectDir che avvaloro così :


    File selectDir = fileChooser.getSelectedFile();

    non viene avvalorato e così quindi l'istruzione seguente :

    TextFieldPath.setText(selectDir.getAbsoluteFile(). toString());

    mi genera NullPointerException

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    ripeto non è un errore di eclipseeee

    Come fa ad essere un errore di eclipse se ti si presenta eseguendo a riga di comando?

    Piuttosto ricontrolla l'ordine di valorizzazione dei componenti swing, a sto punto come mai selectDir è null?

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    207
    un attimo...forse è doveroso fare una precisazione prima..io da riga di comando ho eseguito un jar creato con l'opzione create runnable jar di Eclipse (questo l'ho fatto sempre con l'ultima versione, l'unica che ha questo comando). Quindi può essere che poichè il jar è stato generato sempre con eclipse e io da riga di comando ho eseguito quel jar, magari torniamo al problema della jdk e java runtime..qualche parametro sballato.


    EDIT

    selectDir è null perchè cliccando sul bottone non mi si apre la JFileChooser e quindi naturalmente selectDir non viene avvalorato.

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    ok, sai compilare SENZA eclipse? sai usare ant?

    Prova a farlo completamente a mano, senza usare roba di eclipse (ant viene in tuo aiuto) e poi vedi che succede.

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.