PDA

View Full Version : [JAVA] il file jar non esegue le operazioni


franksisca
13-10-2005, 19:02
Ragazzi, :sofico: :sofico: :sofico: :sofico: problema.
Praticamente ho un'applicazione piena zeppa di bottoni e JList, che modifico tramite bottoni.Per fare le azioni dei bottoni avevo creato una innerclass azione che mi implementava ActionListener, in modo che tutte le variabili erano comuni e ci accedevo direttamente.L'0applicazione funziona bene, solo che quando vado a creare l'exe o il jar, appena premo un bottone l'applicazione sparisce :eek: :eek:
Ho subito pensato che fosse dovuto alle innerclassi, ma a questo punto, come risolvere???
riscrivere tutto il programma?(ditemi di no :cry: :cry: :cry: )
Avete qualche altra idea??
avevo visto qualcuno implementare così
JButto button=new JButto("premi");
butto.addActionListener(new ActionListener{
/*
*codice da scrivere
*/
})
ma non sono sicuro, e invece di andare a tentativi, volevo il vostro parere.fatevi sentire, please :(

kingv
13-10-2005, 19:16
sei sicuro di includere tutte le classi necessarie nel jar?

se fai un:
jar -tvf nome_file.jar

deve comparirti la lista di tutte le classi, comprese le inner

franksisca
13-10-2005, 21:05
io lo faccio con l'export di eclipse, anche perchè altrimenti non lo saprei fare :cry: :cry: :cry:
Anzi, se puoi, mi dici come fare???

kingv
13-10-2005, 21:22
fai il controllo che ti ho detto per vedere se l'export di eclipse è configurato correttamente. Devi trovare tutte le classi del tuo progetto compilate, comprese le inner.

franksisca
13-10-2005, 21:38
ok,ora lo faccio e ti faccio sapere.

franksisca
13-10-2005, 21:44
Microsoft Windows XP [Versione 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Francesco Sisca>cd\

C:\>java -tvf gestione.jar
Unrecognized option: -tvf
Could not create the Java virtual machine.

C:\>
ecco quello che mi dà, naturalmente il file gestione.jar è in c:

kingv
14-10-2005, 00:44
usa il programma jar non java!!!!


inoltre prova a lanciare il tuo programma da prompt di dos e quando esce posta il messaggio che stampa a video.

franksisca
14-10-2005, 01:19
Microsoft Windows XP [Versione 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Francesco Sisca>cd\

C:\>jar -tvf gestione.jar
"jar" non è riconosciuto come comando interno o esterno,
un programma eseguibile o un file batch.
ecco quello che mi dice, ma dimmi un pò, devo settare anche il classpath???

franksisca
14-10-2005, 10:30
usa il programma jar non java!!!!


inoltre prova a lanciare il tuo programma da prompt di dos e quando esce posta il messaggio che stampa a video.
l'ho fatto, ma non esce nessun messaggio, e come se quando premo un pulsante mi fà uscire automaticamente.

fbcyborg
14-10-2005, 10:45
C:\>jar -tvf gestione.jar
"jar" non è riconosciuto come comando interno o esterno,
un programma eseguibile o un file batch.
ecco quello che mi dice, ma dimmi un pò, devo settare anche il classpath???

il file jar.exe si trova dentro la cartella bin del jdk... se non ti funziona controlla che ci sia quel percorso nel path(usi windows?)
prova anche a dargli tutto il percorso...
del tipo:
C:\>C:\j2sdk1.4.2_08\bin\jar.exe -tvf gestione.jar
Il classpath non va settato... non è necessario

franksisca
14-10-2005, 10:52
allora, sono andato nella cartella e questo è il risultato:Microsoft Windows XP [Versione 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Francesco Sisca>cd\

C:\>cd programmi

C:\Programmi>cd java

C:\Programmi\Java>dir
Il volume nell'unità C non ha etichetta.
Numero di serie del volume: B02E-52C0

Directory di C:\Programmi\Java

22/07/2005 19.48 <DIR> .
22/07/2005 19.48 <DIR> ..
18/06/2005 09.49 <DIR> j2sdk-1_4_2-doc
26/09/2005 10.49 <DIR> jdk1.5.0_01
01/03/2005 20.06 <DIR> jre1.5.0_01
22/05/2005 19.19 <DIR> jre1.5.0_02
22/07/2005 19.48 <DIR> jre1.5.0_04
0 File 0 byte
7 Directory 3.270.193.152 byte disponibili

C:\Programmi\Java>cd jdk1.5.0_01

C:\Programmi\Java\jdk1.5.0_01>dir
Il volume nell'unità C non ha etichetta.
Numero di serie del volume: B02E-52C0

Directory di C:\Programmi\Java\jdk1.5.0_01

26/09/2005 10.49 <DIR> .
26/09/2005 10.49 <DIR> ..
01/03/2005 20.04 <DIR> bin
07/12/2004 00.05 2.539 COPYRIGHT
20/07/2005 19.07 <DIR> demo
01/03/2005 20.03 <DIR> include
18/04/2003 10.56 831.911 java3d-utils-src.jar
01/03/2005 20.04 <DIR> jre
26/09/2005 11.16 <DIR> lib
06/12/2004 22.14 15.848 LICENSE
01/03/2005 20.03 21.223 LICENSE.rtf
06/12/2004 22.14 19.367 README.html
18/04/2003 10.56 28.275 README.java3d.win32d3d.txt
01/03/2005 20.03 <DIR> sample
06/12/2004 22.14 18.081.134 src.zip
06/12/2004 22.14 69.740 THIRDPARTYLICENSEREADME.txt
8 File 19.070.037 byte
8 Directory 3.270.193.152 byte disponibili

C:\Programmi\Java\jdk1.5.0_01>cd bin

C:\Programmi\Java\jdk1.5.0_01\bin>jar -tvf gestione.jar
java.io.FileNotFoundException: gestione.jar (Impossibile trovare il file specifi
cato)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at java.io.FileInputStream.<init>(FileInputStream.java:66)
at sun.tools.jar.Main.run(Main.java:184)
at sun.tools.jar.Main.main(Main.java:903)

C:\Programmi\Java\jdk1.5.0_01\bin>jar -tvf c:\gestione.jar
85 Fri Oct 14 10:49:22 CEST 2005 META-INF/MANIFEST.MF
508 Mon Sep 26 11:25:30 CEST 2005 .classpath
393 Wed Aug 03 10:11:40 CEST 2005 .project
3885 Thu Oct 13 08:48:02 CEST 2005 gestione/UtenteGrafica$Azione.class
5184 Thu Oct 13 08:48:02 CEST 2005 gestione/UtenteGrafica.class
5905 Wed Oct 12 11:51:12 CEST 2005 gestione/UtenteGrafica.java
2459 Thu Oct 13 11:36:34 CEST 2005 gestione/AzioniAmA$Azione.class
6977 Thu Oct 13 11:36:34 CEST 2005 gestione/AzioniAmA.class
7679 Thu Oct 13 11:36:34 CEST 2005 gestione/AzioniAmA.java
10269 Fri Oct 14 10:47:52 CEST 2005 gestione/GestoreGrafica$Azione.class
9559 Fri Oct 14 10:47:52 CEST 2005 gestione/GestoreGrafica.class
17864 Fri Oct 14 10:47:52 CEST 2005 gestione/GestoreGrafica.java
3735 Thu Oct 13 08:48:02 CEST 2005 gestione/Database.class
5099 Tue Sep 27 09:44:02 CEST 2005 gestione/Database.java
4147 Thu Oct 13 12:30:44 CEST 2005 gestione/AzioniAmM$Azione.class
9075 Thu Oct 13 12:30:44 CEST 2005 gestione/AzioniAmM.class
9473 Thu Oct 13 12:30:44 CEST 2005 gestione/AzioniAmM.java
2927 Thu Oct 13 08:48:02 CEST 2005 gestione/Rilevatore.class
2474 Mon Oct 10 12:41:00 CEST 2005 gestione/Rilevatore.java
2621 Thu Oct 13 08:48:02 CEST 2005 gestione/AltriOperatori.class
2292 Thu Oct 06 16:11:08 CEST 2005 gestione/AltriOperatori.java
2380 Thu Oct 13 08:48:02 CEST 2005 gestione/LogIn$Azione.class
3926 Thu Oct 13 08:48:02 CEST 2005 gestione/LogIn.class
5079 Wed Oct 12 12:06:22 CEST 2005 gestione/LogIn.java
2169 Thu Oct 13 12:10:24 CEST 2005 gestione/AzioniAmR$Azione.class
5214 Thu Oct 13 12:10:24 CEST 2005 gestione/AzioniAmR.class
4968 Thu Oct 13 12:10:22 CEST 2005 gestione/AzioniAmR.java
1235 Thu Oct 13 09:01:48 CEST 2005 gestione/AdminGrafica$Azione.class
3547 Thu Oct 13 09:01:48 CEST 2005 gestione/AdminGrafica.class
3624 Thu Oct 13 09:01:46 CEST 2005 gestione/AdminGrafica.java
462 Thu Oct 13 08:48:02 CEST 2005 gestione/Test.class
475 Mon Oct 10 17:22:50 CEST 2005 gestione/Test.java
7354 Thu Oct 13 08:48:02 CEST 2005 gestione/Gestore.class
6380 Mon Oct 10 18:00:38 CEST 2005 gestione/Gestore.java
188 Thu Oct 13 08:48:02 CEST 2005 gestione/Operatore.class
463 Thu Oct 06 15:28:52 CEST 2005 gestione/Operatore.java
1746 Thu Oct 13 08:48:02 CEST 2005 gestione/Rilevazione.class
1602 Mon Oct 10 16:44:58 CEST 2005 gestione/Rilevazione.java
5042 Thu Oct 13 08:48:02 CEST 2005 gestione/Associazione.class
5199 Thu Oct 06 16:31:34 CEST 2005 gestione/Associazione.java
11973 Fri Oct 07 11:52:22 CEST 2005 gestione/gestione.zip

C:\Programmi\Java\jdk1.5.0_01\bin>

da quello che vedo, le innerclass ci sono, allora perchè non le esegue???
quasi quasi vi posto il codice, un attimo che lo copio.

franksisca
14-10-2005, 10:53
ecco il codice/*
* Created on 29-set-2005
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package gestione;

import java.awt.Dimension;
import java.awt.GraphicsConfiguration;
import java.awt.HeadlessException;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import java.util.StringTokenizer;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.ListSelectionModel;

/**
* @author Francesco Sisca
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class GestoreGrafica extends JFrame {
private JPanel pannello;
private JButton esci, connetti, seleziona, calcola, dettagli, login;
private Gestore gestore;
private JScrollPane scrollerOperatori, scrollerAssociazioni;
private JList listaAssociazioni, elencoOperatori;
private JComboBox anno;
private JLabel budget, cRimanente, elencoOp, selezionata, costoT, costoA, costoR,
elencoAss, oreT, oreE, oreR, rilE, rilS, rilN, attuale, connesso;
private JTextArea budgetT, cRimanenteT, costoTT, costoAT, costoRT,
oreTT, oreET, oreRT, rilET, rilST, rilNT, attualeT;
private Toolkit tk=Toolkit.getDefaultToolkit();
private JFrame altro;

/**
* Comment for <code>serialVersionUID</code>
*/
private static final long serialVersionUID = 3256722862164161593L;


public GestoreGrafica() throws HeadlessException {
super();
// TODO Auto-generated constructor stub
inizializzazioneGrafica();
}
public GestoreGrafica(GraphicsConfiguration arg0) {
super(arg0);
// TODO Auto-generated constructor stub
inizializzazioneGrafica();
}
public GestoreGrafica(String arg0) throws HeadlessException {
super(arg0);
// TODO Auto-generated constructor stub
inizializzazioneGrafica();
}
public GestoreGrafica(String arg0, GraphicsConfiguration arg1) {
super(arg0, arg1);
// TODO Auto-generated constructor stub
inizializzazioneGrafica();
}

private void inizializzazioneGrafica() {
// TODO Auto-generated method stub
inserimentoPulsanti();
this.altro=new JFrame("Dati particolareggiati");
this.connetti=new JButton("Connetti al database");
this.calcola=new JButton("Calcola spesa.");
this.esci=new JButton ("Esci.");
this.login=new JButton("Aggiungi Ore");
this.seleziona=new JButton("Seleziona.");
this.dettagli=new JButton("Dettagli");

this.esci.addActionListener(new Azione());
this.calcola.addActionListener(new Azione());
this.seleziona.addActionListener(new Azione());
this.connetti.addActionListener(new Azione());
this.dettagli.addActionListener(new Azione());
this.login.addActionListener(new Azione());

//Localizzazione del frame
Dimension schermo=tk.getScreenSize();
this.setResizable(false);
this.setSize(600,450);
this.setLocation((int)schermo.getWidth()/2-300,(int)schermo.getHeight()/2-225);
settaPulsanti();
aggiungiPulsanti();

this.setVisible(true);
}

private void inserimentoPulsanti() {
// TODO Auto-generated method stub
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pannello=new JPanel(null);
this.attualeT=new JTextArea();
this.budgetT=new JTextArea();
this.costoAT=new JTextArea();
this.costoRT=new JTextArea();
this.costoTT=new JTextArea();
this.cRimanenteT=new JTextArea();
this.oreET=new JTextArea();
this.oreRT=new JTextArea();
this.oreTT=new JTextArea();
this.rilET=new JTextArea();
this.rilST=new JTextArea();
this.rilNT=new JTextArea();
this.attuale=new JLabel();
this.budget=new JLabel();
this.cRimanente=new JLabel();
this.connesso=new JLabel();
this.elencoAss=new JLabel();
this.elencoOp=new JLabel();
this.oreE=new JLabel();
this.oreR=new JLabel();
this.oreT=new JLabel();
this.rilE=new JLabel();
this.costoT=new JLabel();
this.costoR=new JLabel();
this.costoA=new JLabel();
this.rilS=new JLabel();
this.rilN=new JLabel();
this.selezionata=new JLabel();

this.attuale.setText("Costo attuale:");
this.budget.setText("Budget associazione:");
this.cRimanente.setText("Costo rimanente:");
this.elencoAss.setText("Elenco Associazioni:");
this.elencoOp.setText("Elenco Operatori:");
this.oreE.setText("Ore effettuate:");
this.oreR.setText("Ore rimanenti:");
this.oreT.setText("Ore totali:");
this.rilE.setText("Rilevazioni effettuate:");
this.rilN.setText("Rilevazioni fallite:");
this.rilS.setText("Rilevazioni positive:");
this.selezionata.setText("Associazione:");
this.costoA.setText("Costo attuale:");
this.costoR.setText("Costo rimanente:");
this.costoT.setText("Costo totale:");

this.connesso.setText("DATABASE DISCONNESSO.");
//faccio selezionare l'anno accademico
this.anno=new JComboBox();
this.anno.addItem("2004/2005");
this.anno.addItem("2005/2006");
this.anno.addItem("2006/2007");
this.anno.setSelectedItem("2004/2005");
this.listaAssociazioni=new JList();
this.elencoOperatori=new JList();
this.scrollerAssociazioni=new JScrollPane(this.listaAssociazioni);
this.scrollerOperatori=new JScrollPane(this.elencoOperatori);
}

private void aggiungiPulsanti() {
// TODO Auto-generated method stub
this.pannello.add(this.connetti);
this.pannello.add(this.esci);
this.pannello.add(this.scrollerAssociazioni);
this.pannello.add(this.elencoAss);
this.pannello.add(this.budget);
this.pannello.add(this.attuale);
this.pannello.add(this.cRimanente);
this.pannello.add(this.seleziona);
this.pannello.add(this.selezionata);
this.pannello.add(this.scrollerOperatori);
this.pannello.add(this.elencoOp);
this.pannello.add(this.costoT);
this.pannello.add(this.costoA);
this.pannello.add(this.costoR);
this.pannello.add(this.oreE);
this.pannello.add(this.oreT);
this.pannello.add(this.oreR);
this.pannello.add(this.rilE);
this.pannello.add(this.rilS);
this.pannello.add(this.rilN);
this.pannello.add(this.calcola);
this.pannello.add(this.attualeT);
this.pannello.add(this.budgetT);
this.pannello.add(this.cRimanenteT);
this.pannello.add(this.costoAT);
this.pannello.add(this.costoRT);
this.pannello.add(this.costoTT);
this.pannello.add(this.oreET);
this.pannello.add(this.oreRT);
this.pannello.add(this.oreTT);
this.pannello.add(this.rilET);
this.pannello.add(this.rilST);
this.pannello.add(this.rilNT);
this.pannello.add(this.dettagli);
this.pannello.add(this.connesso);
this.pannello.add(this.anno);
this.pannello.add(this.login);

this.add(this.pannello);
}

private void settaPulsanti() {
// TODO Auto-generated method stub
this.connesso.setBounds(160,10,160,20);
this.login.setBounds(100,380,160,30);
this.connetti.setBounds(0,0,150,30);
this.esci.setBounds(520,405,70,20);
this.dettagli.setBounds(10,380,80,30);
this.scrollerAssociazioni.setBounds(10,80,120,150);
this.listaAssociazioni.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
this.elencoOperatori.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
this.elencoAss.setBounds(10,50,120,30);
this.budget.setBounds(10,250,130,20);
this.attuale.setBounds(10,280,100,20);
this.cRimanente.setBounds(10,310,100,20);
this.seleziona.setBounds(140,140,100,30);
this.selezionata.setBounds(140,180,100,20);
this.scrollerOperatori.setBounds(250,80,150,150);
this.elencoOp.setBounds(250,50,120,30);
this.costoT.setBounds(250,250,100,20);
this.costoA.setBounds(250,280,100,20);
this.costoR.setBounds(250,310,100,20);
this.oreT.setBounds(410,80,100,20);
this.oreE.setBounds(410,100,100,20);
this.oreR.setBounds(410,120,100,20);
this.rilE.setBounds(410,140,130,20);
this.rilS.setBounds(410,160,130,20);
this.rilN.setBounds(410,180,130,20);
this.calcola.setBounds(430,250,150,30);
this.attualeT.setBounds(140,280,70,20);
this.attualeT.setEditable(false);
this.budgetT.setBounds(140,250,70,20);
this.budgetT.setEditable(false);
this.cRimanenteT.setBounds(140,310,70,20);
this.cRimanenteT.setEditable(false);
this.costoAT.setBounds(350,280,70,20);
this.costoAT.setEditable(false);
this.costoRT.setBounds(350,310,70,20);
this.costoRT.setEditable(false);
this.costoTT.setBounds(350,250,70,20);
this.costoTT.setEditable(false);
this.oreET.setBounds(540,100,50,15);
this.oreET.setEditable(false);
this.oreRT.setBounds(540,120,50,15);
this.oreRT.setEditable(false);
this.oreTT.setBounds(540,80,50,15);
this.oreTT.setEditable(false);
this.rilET.setBounds(540,140,50,15);
this.rilET.setEditable(false);
this.rilST.setBounds(540,160,50,15);
this.rilST.setEditable(false);
this.rilNT.setBounds(540,180,50,15);
this.rilNT.setEditable(false);
this.anno.setBounds(450,0,120,20);
}

class Azione implements ActionListener{

/* (non-Javadoc)
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
Object chiamante=arg0.getSource();


if(chiamante == esci){
System.exit(0);
}

else if(chiamante == login){
new LogIn();
setVisible(false);
}

else if(chiamante == seleziona){
String valore=(String) listaAssociazioni.getSelectedValue();
if(!(valore==null)){
gestore.setAnnoAccademico((String) anno.getSelectedItem());
gestore.caricaOperatori();
gestore.caricaRilevatori();
gestore.caricaOreEffettuate();
gestore.caricaRilevazioni();
gestore.assegnaOperatori();
gestore.assegnaRilevatori();
gestore.assegnaRilevazioni();
selezionata.setText(valore);
//adesso gli faccio caricare l'elenco degli operatori nella JList operatori.
List ass=gestore.getAssociazioni();
Associazione a=new Associazione("");
a.setDescrizione(valore);
Associazione asso=(Associazione) ass.get(ass.indexOf(a));
List op=asso.getOperatori();
elencoOp.setText("Elenco Operatori: "+op.size());
String []elenco=new String[op.size()];
for(int i=0;i<elenco.length;++i){
elenco[i]=op.get(i).toString();
}
//qua si può aggiustare sto casino
double costoA=asso.costoAssociazione()+0.000000001;
double costoT=25000.00000;
double costoR=costoT-costoA;
String w=""+costoA;
String l=w.substring(0,w.indexOf(".")+3);
String ww=""+costoT+"00000";
String ll=ww.substring(0,ww.indexOf(".")+3);
String www=""+(costoR);
String lll=www.substring(0,www.indexOf(".")+3);
budgetT.setText(ll);
attualeT.setText(l);
cRimanenteT.setText(lll);
elencoOperatori.setListData(elenco);

}
else{
JOptionPane.showMessageDialog(null,"Nessuna Associazione selezionata","Errore selezione",JOptionPane.ERROR_MESSAGE);
}
}

else if(chiamante == calcola){
String nomi=(String) elencoOperatori.getSelectedValue();
Associazione ass=new Associazione();
ass.setDescrizione(selezionata.getText());
List associazioni=gestore.getAssociazioni();
Associazione a=(Associazione) associazioni.get(associazioni.indexOf(ass));
List operatori=a.getOperatori();
try{
AltriOperatori aop=new AltriOperatori();
StringTokenizer st=new StringTokenizer(nomi,"_");
aop.setCognome(st.nextToken());
aop.setNome(st.nextToken());
AltriOperatori r=(AltriOperatori) operatori.get(operatori.indexOf(aop));
String c=""+r.calcola()+"000";
costoAT.setText(c.substring(0,c.indexOf(".")+3));
String cc=""+(r.getNumeroOre()*Operatore.costoOra)+"0000000001";
costoTT.setText(cc.substring(0,cc.indexOf(".")+3));
double ct=r.getNumeroOre()*Operatore.costoOra;
double ca=r.calcola();
String tot=""+(ct-ca)+"0.000001";
costoRT.setText(tot.substring(0,tot.indexOf(".")+3));
int oreT=r.getNumeroOre();
int oreE=r.getOreEffettuate();
oreTT.setText(oreT+"");
oreET.setText(oreE+"");
oreRT.setText((oreT-oreE)+"");
rilET.setText("0");
rilNT.setText("0");
rilST.setText("0");
}
catch(Exception e){
Rilevatore aopp=new Rilevatore();
StringTokenizer st=new StringTokenizer(nomi,"_");
aopp.setCognome(st.nextToken());
aopp.setNome(st.nextToken());
Rilevatore r=(Rilevatore) operatori.get(operatori.indexOf(aopp));
System.out.println(r.getRilevazioni());
String c=""+r.calcola();
costoAT.setText(c.substring(0,c.indexOf(".")+3));
costoRT.setText("0");
costoTT.setText(c.substring(0,c.indexOf(".")+3));
oreTT.setText("0");
oreET.setText("0");
oreRT.setText("0");
List l=r.getRilevazioni();
int numero=l.size();
rilET.setText(numero+"");
rilST.setText(r.numRilevazioniSi()+"");
rilNT.setText((numero-r.numRilevazioniSi())+"");
}
}

else if(chiamante == connetti){
gestore=new Gestore();
if(gestore.connesso()){
connesso.setText("DATABASE CONNESSO.");
gestore.caricaAssociazioni();
String elencoAss[];
List l=gestore.getAssociazioni();
elencoAss=new String[l.size()];
for(int i=0;i<l.size();++i)
elencoAss[i]=((Associazione) l.get(i)).getDescrizione();
String elencoAttive[]=attive(elencoAss);
listaAssociazioni.setListData(elencoAttive);
}
else {
connesso.setText("DATABASE DISCONNESSO.");
}
//ora devo caricare i dati e metterli in memoria

}


else if(chiamante == dettagli){

altro=new JFrame("Dettagli associazione");
altro.setSize(300,300);
altro.setLocation(tk.getScreenSize().width/2-150,tk.getScreenSize().height/2-150);
JPanel p=new JPanel(null);
int c=10;
JLabel supporto=new JLabel(), almalaurea=new JLabel(), nucleo=new JLabel(),
informatico=new JLabel(), rilevazioni=new JLabel(), statistico=new JLabel();
supporto.setBounds(20,20+c,120,30);
almalaurea.setBounds(20,60+c,120,30);
nucleo.setBounds(20,100+c,120,30);
statistico.setBounds(20,140+c,120,30);
informatico.setBounds(20,180+c,120,30);
rilevazioni.setBounds(20,220+c,120,30);
supporto.setText("Supporto Ivadis:");
almalaurea.setText("Almalaurea:");
nucleo.setText("Lettore:");
statistico.setText("Statistico:");
informatico.setText("Informatico:");
rilevazioni.setText("Rilevatori:");
p.add(supporto);
p.add(almalaurea);
p.add(nucleo);
p.add(statistico);
p.add(informatico);
p.add(rilevazioni);
JTextArea supp=new JTextArea(), alma=new JTextArea(), nuc=new JTextArea(),
inf=new JTextArea(), ril=new JTextArea(), stat=new JTextArea();
supp.setEditable(false);
alma.setEditable(false);
nuc.setEditable(false);
stat.setEditable(false);
inf.setEditable(false);
ril.setEditable(false);
supp.setBounds(140,20+c,60,30);
alma.setBounds(140,60+c,60,30);
nuc.setBounds(140,100+c,60,30);
stat.setBounds(140,140+c,60,30);
inf.setBounds(140,180+c,60,30);
ril.setBounds(140,220+c,60,30);
p.add(supp);
p.add(alma);
p.add(inf);
p.add(stat);
p.add(ril);
p.add(nuc);
JTextArea suppt=new JTextArea(), almat=new JTextArea(), nuct=new JTextArea(),
inft=new JTextArea(), rilt=new JTextArea(), statt=new JTextArea();
suppt.setEditable(false);
almat.setEditable(false);
nuct.setEditable(false);
statt.setEditable(false);
inft.setEditable(false);
rilt.setEditable(false);
suppt.setBounds(220,20+c,60,30);
almat.setBounds(220,60+c,60,30);
nuct.setBounds(220,100+c,60,30);
statt.setBounds(220,140+c,60,30);
inft.setBounds(220,180+c,60,30);
rilt.setBounds(220,220+c,60,30);
p.add(suppt);
p.add(almat);
p.add(inft);
p.add(statt);
p.add(rilt);
p.add(nuct);
JLabel spesi=new JLabel("Spesi:"), rimasti=new JLabel("Rimanenti:");
spesi.setBounds(140,0,80,30);
rimasti.setBounds(220,0,80,30);
p.add(spesi);
p.add(rimasti);



Associazione ass=new Associazione();
ass.setDescrizione(selezionata.getText());
Associazione a=(Associazione) gestore.getAssociazioni().get(gestore.getAssociazioni().indexOf(ass));
String supc=a.costoSupporto()+"";
String almac=a.costoAlmalaurea()+"";
String nucc=a.costoLettore()+"";
String statc=a.costoStatistico()+"";
String infc=a.costoInformatico()+"";
String rilc=a.costoRilevatori()+"";
supp.setText(supc);
alma.setText(almac);
nuc.setText(nucc);
stat.setText(statc);
inf.setText(infc);
ril.setText(rilc);




altro.add(p);
altro.setVisible(true);
altro.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
altro.setResizable(false);
}
}

/**
* @param elencoAss
* @return
*/
private String[] attive(String[] elencoAss) {
// TODO Auto-generated method stub
String[]att=new String[5];
int cnt=0;
for(int i=0;i<elencoAss.length;++i){
if(elencoAss[i].equals("UDU")||elencoAss[i].equals("ICU")||elencoAss[i].equals("ALFA")||elencoAss[i].equals("RDU")||elencoAss[i].equals("UF")){
att[cnt]=elencoAss[i];
cnt++;
}
}
return att;
}

}
}



EDIT: gli else li ho aggiunti dopo le prove, se lascio if(chiamante==qualcosa, l'errore è lo stesso.

fbcyborg
14-10-2005, 11:12
E' una strana eccezione:


at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at java.io.FileInputStream.<init>(FileInputStream.java:66)
at sun.tools.jar.Main.run(Main.java:184)
at sun.tools.jar.Main.main(Main.java:903)


forse cìè qualche pacchetto che non è stato importato?
scusa, ma ho visto che la seconda volta il jar ha funzionato...
che cosa succede quando tenti di eseguire il jar? da delle eccezioni?

quando fai java -jar gestione.jar che dice?

kingv
14-10-2005, 11:20
da prompt di dos scrivi:


c:\jdkecc.ecc\bin\java -cp c:\gestione.jar gestione.NomeClassCheContieneIlMain


poi fai l'operazione che lo fa chiudere e posta l'eccezione che probabilmente comparirà a video.

franksisca
14-10-2005, 11:23
allora, chiedendo scusa a tutti della mia ignoranza(e pensare che pensavo di conoscere jaava), il problema non è ne jar, perchè, da come si è visto, e da come ho modificato alcune cose, il jar funziona.
il problema, e ora ce ne facciamo 4 di risate(VOI, io NO), e che, se avvio il programma da eclipse, mi si collega al database, mentre se avvio il jar NO!!!!!! :cry: :cry:
Secondo voi perchè???

P.S.: il jar va bene, quindi grazie per tutte le vostre info.

fbcyborg
14-10-2005, 11:40
Pensa che io ho il problema inverso... che plugin hai usato con eclipse x farlo funzionare con un dbms? io usavo oracle.
Per favore, posta l'eccezione che ti da quando avvii il jar. Dovrebbe darne qualcuna relativa al driver jdbc

franksisca
14-10-2005, 11:46
lo sò che dovrebbe darne una, ma non nè dà :mad: :mad: :mad:
cmq ho usato JConnector per collegarmi a MYSQL.
La cosa strana e che se lo avvio da eclipse va bene, mentre se lo avvio da jar, mi dà errori, ma ora che ci penso, JConnector, deve essere nel path di sistema, vero?!?!?
e se non c'è, questo errore sarebbe normale??? corro a controllare.

fbcyborg
14-10-2005, 11:50
mah, non penso che il JConnector si debba mettere nel path di sistema: tu cmq prova...
Ma poi scusa, non è un plugin per eclipse questo JConnector?
Pensa se ogni cliente che esegue la tua applicazione si dovesse scomodare a dover sistemare le variabili d'ambiente...

franksisca
14-10-2005, 11:54
mah, non penso che il JConnector si debba mettere nel path di sistema: tu cmq prova...
Ma poi scusa, non è un plugin per eclipse questo JConnector?
Pensa se ogni cliente che esegue la tua applicazione si dovesse scomodare a dover sistemare le variabili d'ambiente...
infatti, cmq sono riuscito a catturare l'eccezzione :winner: :winner: :winner:
è questa:"com.mysql.jdbc.Driver"
Aspetto :help: .

fbcyborg
14-10-2005, 12:24
per favore mi posti tutta l'eccezione? vediamo se riesco a capirci qualcosa di più. Quello è solo il nome del driver per accedere al dbms di mysql.

franksisca
14-10-2005, 12:32
si, scusa, avevo toppato il ctrl+c-->ctrl+v, cmq in allegato c'è l'immagine.

franksisca
14-10-2005, 12:39
naturalmente, come era ovvio aspettarsi,
Class.forName("com.mysql.jdbc.Driver").newInstance();
questo c'è scritto alla riga 40 della classe database.

EDIT: ho provato anche a togliere il new Instance, ma il risultato è uguale, ovvero errore. :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry:

fbcyborg
14-10-2005, 12:50
Io di solito uso una classe a parte per la connessione:

import java.sql.*;

public class ConnectionManager {

public static Connection getConnection() throws SQLException, ClassNotFoundException{

String MY_DRIVER = "oracle.lite.poljdbc.POLJDBCDriver";
String MY_URL = "jdbc:polite:libreria";
String LOGIN = "system";
String PASSWD = "manager";
Class.forName(MY_DRIVER);
return DriverManager.getConnection(MY_URL,LOGIN, PASSWD);
}
}

chiaramente l'URL e il DRIVER sono per oracle..
Tu come la gestisci questa parte di applicazione?

franksisca
14-10-2005, 12:55
io uso la classe database per la connessione al database, eseguire query e aggiornamenti, poi un gestore che mi collega il database e poi la grafica che interfaccia l'utente al database.

fbcyborg
14-10-2005, 13:17
una cosa molto strana è che io avevo il tuo stesso problema, ma al contrario.
Quando usavo eclipse x far girare i programmi dbms based mi dava sempre errore. Questo perchè non ho un plugin per eclipse x i dbms.
Quindi x far funzionare il tutto dovevo lanciare la mia applicazione da riga di comando.
Io non uso mysql, ma hai registrato il db su odbcad32 ?

kingv
14-10-2005, 13:50
devi mettere in classpath il jar dei driver jdbc che stai usando

eclipse lo ha fatto per te nel progetto, per questo funziona.

franksisca
14-10-2005, 14:47
ragazzi, lunedì torno al luogo i lavoro e vi faccio sapere.
Grazie per l'aiuto comunque.

fbcyborg
14-10-2005, 15:01
devi mettere in classpath il jar dei driver jdbc che stai usando

eclipse lo ha fatto per te nel progetto, per questo funziona.
Come come??? vuoi dire che non serve alcun plugin per sviluppare applicazioni su dbms con eclipse???
io ho provato ad aggiungere nel form "run"
C:\Program Files\Oracle\Mobile\Sdk\bin\msql.jar
dove c'è il tab classpath, ma non funziona.

kingv
14-10-2005, 15:12
Come come??? vuoi dire che non serve alcun plugin per sviluppare applicazioni su dbms con eclipse???
io ho provato ad aggiungere nel form "run"
C:\Program Files\Oracle\Mobile\Sdk\bin\msql.jar
dove c'è il tab classpath, ma non funziona.


non conosco bene eclipse, ma indipendentemente dal suo meccanismo di plugin una qualsiasi applicazione che usa jdbc ha bisogno del driver specifico per il database (con l'unica eccezione del bridge jdbc:odbc che se ne sbaglio è già nelle librerie standard).
sei sicuro che quello che hai usato sia il driver jdbc giusto? a cosa si riferisce quel "mobile"?

fbcyborg
14-10-2005, 16:10
no, aspetta, forse non mi sono spiegato bene...
La mi applicazione gira perfettamente (29/30 come esame progettuale :D ) solo che per realizzarla, ogni volta che dovevo mandarla in esecuzione dovevo x forza farla partire da riga di comando perchè eclipse dava questa eccezione:

java.lang.ClassNotFoundException: oracle.lite.poljdbc.POLJDBCDriver
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at dao.ConnectionManager.getConnection(ConnectionManager.java:13)
at dao.Queries.listaLibri(Queries.java:33)
at controller.QueriesController.listaLibri(QueriesController.java:8)
at gui.MainFrame.getLibriTable(MainFrame.java:113)
at gui.MainFrame.getJScrollPane(MainFrame.java:101)
at gui.MainFrame.getJContentPane(MainFrame.java:70)
at gui.MainFrame.initialize(MainFrame.java:53)
at gui.MainFrame.<init>(MainFrame.java:45)
at Start.main(Start.java:6)


questo non accade, come ripeto, se lancio da riga di comando... quindi è evidente che manchi qualcosa ad eclipse e non alla mia applicazione che è corretta e "fornita" di indicazioni corrette sui driver.
Cmq ho sentito che per usare l'oracle, c'è bisogno di un plugin x eclipse.

kingv
14-10-2005, 17:12
questo non accade, come ripeto, se lancio da riga di comando... quindi è evidente che manchi qualcosa ad eclipse e non alla mia applicazione che è corretta e "fornita" di indicazioni corrette sui driver.
Cmq ho sentito che per usare l'oracle, c'è bisogno di un plugin x eclipse.


se lo lanci da riga comando e funziona vuol dire che importi correttamente il jar che contiene il driver jdbc. Per fare lo stesso con Eclipse quando crei una "run configuraztion" nel tab "classpath" aggiungi il jar in questione.

fbcyborg
14-10-2005, 17:15
Il fatto è che io nel mio codice non importo alcun jar.
Appunto prima stavo dicendo che ho provato ad aggiungere il jar
C:\Program Files\Oracle\Mobile\Sdk\bin\msql.jar nel classpath del run, ma o è sbagliato o c'è qualche altro problema.. non saprei quale possa essere il jar corretto

anche se fosse non saprei dove andare a cercarlo il file o il driver oracle.lite.poljdbc.POLJDBCDriver

fbcyborg
14-10-2005, 17:20
come non detto: trovato in C:\Program Files\Oracle\Mobile\classes

Oceans11
14-10-2005, 17:54
[QUOTE=fbcyborg]Ma poi scusa, non è un plugin per eclipse questo JConnector?QUOTE]



se è davvero così allora vedi che dentro il file jar probabilmente ci devi mettere anche la classe JConnector con tutta la relativa path....

...per capirci meglio ti faccio un'esempio:


con JBuilder uso il gestore di layout com.borland.jbcl.layout.* (se non sbaglio qlc..!!)

è un package proprio della borland quindi quando creo il file jar dentro la cartella delle classi ci devo mettere anche parte del file "jbcl.jar"

in particolare i file com\borland\jbcl\layout\XYLayout e com\borland\jbcl\layout\XYCostraints

ora siccome non ho mai provato eclipse non saprei suggerirti proprio bene...
ma se JConnector è esclusivo di eclipse probabilmente il problema è questo!

fbcyborg
14-10-2005, 20:13
OK!!! ma ripeto: ho risolto il problema.. dopo tutto questo tempo di lavoro con jdbc ho risposto da solo alla domanda che mi ero posto... x lavorare con jdbc su eclipse, non serve un plugin

franksisca
20-10-2005, 08:56
ragazzi, il problema, dopo aver formattato(non per questo), è ancora quà :mad: :mad: :mad:
Allora, ho provato ad aggiungere il percorso del JConnector al classpath, ma niente, ho aggiunto il file jar all'interno del jar finale, ma niente, con eclipse hpo aggiunto al "run" di eclipse il jar sia internamente e sia esternamente, ma niente, non sò davvero + come fare, ragazzi, vi prego, datemi una mano.

fbcyborg
20-10-2005, 10:59
potresti provare se accade la stessa cosa con oracle???

Io ho inserito nella mia variabile d'ambiente PATH il percorso in cui ci sono le classi per il jdbc e quello è sufficiente...

per favore, controlla bene il PATH.

franksisca
20-10-2005, 11:07
:confused: path :confused:
ma non si era detto classpath :confused: :confused: :confused: :muro: :muro: :muro:
ora ricontrollo, cmq oracle nn posso usarlo, copiare il database è impossibile.

franksisca
20-10-2005, 11:17
C:\Documents and Settings\All Users\Documenti\mysql-connector-java-3.1.11
io ho inserito questo nel path, e poi, nel classpath di eclipse ho aggiunto questo percorso, in eclipse funziona, nel jar nop.Uffa

franksisca
20-10-2005, 11:23
ma dimmi un pò, se metto il classpath in c: :confused: :confused: :confused:

franksisca
20-10-2005, 11:40
niente, ragazzi, non mi abbandonate vi prego, sto sclerando da un mese, ma com'è che sono così scarso.. :mad: :mad: :muro: :muro: :muro: :mad: :mad: :mad: :mad:

saggiatore
20-10-2005, 13:44
Anche a me dà lo stesso problema con NetBeans: da NetBeans funziona tutto, compreso la connessione al DBMS Mysql tramite Jconnector, mentre se da linea di comando provo ad eseguire il jar, il programma funziona, ma la connessione no! Ho provato ad includere il jconnector in tutti i posti, nella cartella src, nel jar finale, ho provato a impostare il path, ma non vuole funzionare!!!

Cosa fare. Il ragazzo del 29/30 usava Mysql. Se sì come ha fatto da linea di comando???

franksisca
20-10-2005, 15:07
fatti il conto che io ho messo JConnector sul database è ho fatto fare riferimento l'ha sia per il eclipse chje per il path e tutto il resto, da eclipse va bene, ma per il resto nulla.

franksisca
28-11-2005, 21:10
ragazzi, ho risolto, se a qualcuno interessa, fate un fischio.