[JAVA]na compileren naar exe start app niet op

Pagina: 1
Acties:

  • degroot
  • Registratie: December 2003
  • Niet online
Ik heb in NetBeans een applicatie gemaakt.
Van deze applicatie wil ik een executable maken.

Als ik mijn code compileer in NetBeans , dan gaat dat allemaal perfect.
Ook als ik mijn applicatie vanuit NetBeans wil runnen , dan gaat dat ook allemaal perfect.

Dan wil ik er een executable van maken , hiervoor gebruik ik JSmoothGen.
Na het invoeren van mijn .jar file ,en het aangeven waar mijn klassen staan , compileert hij mijn project tot een .exe
Hier krijg ik ook allemaal geen enkele foutmelding te zien.

Echter , als ik dubbelklik op de .exe , dan start hij mijn programma niet op.
Wil is de laptop heel ff druk bezig, en kijk ik dan in taskmanager, dan zie ik dat er een proces genaamd javaw.exe bijkomt.
Dit is echter maar voor een enkele seconde en dan verdwijnt het proces weer.

Een tijdje terug had ik een rekenmachinetje gemaakt(zonder swing) en op exact dezelfde manier als hierboven staat , heb ik deze applicatie naar een .exe gecompileerd.
Het gekke is dat deze nu nog wel steeds werkt als ik deze dubbelklik.

Ter verduidelijking geef ik even de JAVA code mee(let wel , vanuit mijn IDE werkt het wel allemaal gewoon)
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;

public class test extends JFrame
{
    public static void main(String[] args)
    {   //niewe klasse test aanmaken
        new test();
    }
    
    //Variabelen aanmaken
   private JButton bladerknop ,  resizeknop;
   private JTextField bestandvenster,hoogtevenster,breedtevenster,bestandgrootte,resizehoogte,resizebreedte;
   private JLabel filelabel,hoogtelabel,breedtelabel,previewafbeelding,bestandgroottelabel,resizehoogtelabel,resizebreedtelabel;
   private JRadioButton prefixmaat , procentmaat, costummaat;
   private JSlider schuifbalk;
   private String picturelokatie;
   private Image picture;
    
    public test()
    {   //Frame gegevens vastzetten
        setSize(800,600);
        setTitle("Slice - image Resizer");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
               
        //nieuw paneel aanmaken en layout vastzetten 
        JPanel content =(JPanel) getContentPane(); 
        content.setLayout(new BorderLayout()); 
        
         //2 panelen aanmaken
         JPanel besturingpaneel = new JPanel();
         JPanel bestandpaneel = new JPanel();
         JPanel optiepaneel = new JPanel();
         JPanel maatpaneel = new JPanel();
         JPanel afbeeldingpaneel = new JPanel();
    
         //panelen toevoegen
        content.add(besturingpaneel, BorderLayout.NORTH);
        content.add(bestandpaneel);
        content.add(optiepaneel);
        content.add(maatpaneel);
        content.add(afbeeldingpaneel, BorderLayout.CENTER);
        
       //radiobuttons aanmaken
       prefixmaat = new JRadioButton("Prefix");
       procentmaat = new JRadioButton("Percentage");
       costummaat = new JRadioButton("Costum");
       
       ButtonGroup knoppengroep = new ButtonGroup();
       knoppengroep.add(prefixmaat);
       knoppengroep.add(procentmaat);
       knoppengroep.add(costummaat);
       
       //dropdownlijstje maken met daarin voorgeprogrammeerde formaten
       String fotoformaten[] = {"320x240","640x480","800x600","1024x768"};
       JComboBox lijstje = new JComboBox(fotoformaten);
       
       //schuifbalk aanmaken voor percentage foto
       schuifbalk = new JSlider(0,100);
       schuifbalk.setMajorTickSpacing(10);
       schuifbalk.setMinorTickSpacing(1);
       schuifbalk.setPaintTicks(true);
       schuifbalk.setPaintLabels(true);
       
        //knoppen maken en actionlistener aan toevoegen
        bladerknop = new JButton("Blader");
        bladerknop.addActionListener(new knopjeHandler());
        resizeknop = new JButton("Resize!");
        resizeknop.addActionListener(new knopjeHandler());
        
        //tekstvelden maken
        bestandvenster = new JTextField(25);
        hoogtevenster = new JTextField("",5);
        breedtevenster = new JTextField("",5);
        bestandgrootte = new JTextField("",5);
        resizebreedte = new JTextField("",5);
        resizehoogte = new JTextField("",5);
        
        //labels aanmaken
        filelabel = new JLabel("File:");
        hoogtelabel = new JLabel("Hoogte:");
        breedtelabel = new JLabel("Breedte:");
        bestandgroottelabel = new JLabel("Grootte");
        resizebreedtelabel = new JLabel("Breedte:");
        resizehoogtelabel = new JLabel("hoogte");
        ImageIcon icon = new ImageIcon("down.jpg");
        previewafbeelding = new JLabel(icon);
        
        //alles toevoegen aan de desbetreffende panelen
        bestandpaneel.add(filelabel);
        bestandpaneel.add(bestandvenster);
        bestandpaneel.add(bladerknop);
        bestandpaneel.add(hoogtelabel);
        bestandpaneel.add(hoogtevenster);
        bestandpaneel.add(breedtelabel);
        bestandpaneel.add(breedtevenster);
        bestandpaneel.add(bestandgroottelabel);
        bestandpaneel.add(bestandgrootte);
        optiepaneel.add(prefixmaat);
        optiepaneel.add(procentmaat);
        optiepaneel.add(costummaat);
        maatpaneel.add(lijstje);
        maatpaneel.add(schuifbalk);
        maatpaneel.add(resizehoogtelabel);
        maatpaneel.add(resizehoogte);
        maatpaneel.add(resizebreedtelabel);
        maatpaneel.add(resizebreedte);
        maatpaneel.add(resizeknop);
        
        //besturingpaneel.add(lijstje);
        afbeeldingpaneel.add(previewafbeelding);
        besturingpaneel.setPreferredSize(new Dimension(100, 130));
        besturingpaneel.add(bestandpaneel);
        besturingpaneel.add(optiepaneel);
        besturingpaneel.add(maatpaneel);
        getContentPane().add(afbeeldingpaneel,BorderLayout.SOUTH);
        getContentPane().add(besturingpaneel,BorderLayout.NORTH);
        
        setVisible(true);
    }
    
    //ActionListener aanmaken die akties uitvoert voor knoppen
    public class knopjeHandler implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            if(e.getSource() == bladerknop)
            { 
                Bladeren();
            }
            else if(e.getSource() == resizeknop)
            {
                String veldlengte = bestandvenster.getText();
                if(veldlengte.length() == 0)
                {   //Popup scherm tonen als er geen image geselecteerd is
                    JOptionPane.showMessageDialog(test.this,"Je moet eerst een afbeelding selecteren voordat je hem kunt resizen","Error mbt image",JOptionPane.ERROR_MESSAGE);
                }
                else
                {
                    
                }
            }
        }
    }
    
    private void Bladeren()
    {   //zoekvenster openen zodat image geselecteerd kan worden en daarna alle gegevens in tekstvelden zetten 
        FileDialog bladervenster = new FileDialog(test.this,"Selecteer een bestand",FileDialog.LOAD);
        bladervenster.show();
        String bestandsnaam = bladervenster.getFile();
        String directory = bladervenster.getDirectory();
        bestandvenster.setText(directory+bestandsnaam);
        picturelokatie = bestandvenster.getText();
        veranderImage();
    }
    
   private void veranderImage()
   {   //plaatje dat in bladervenster geselecteerd is openen en inladen
       picture = getToolkit().getImage(""+picturelokatie);
       MediaTracker media = new MediaTracker(this);
       
       media.addImage(picture,0);
       try
       {
            media.waitForID(0);
       }
       catch(InterruptedException ie)
       {
           System.out.println(ie);
       }
       //hoogte en breedte opvragen 
       int width = picture.getWidth(this);
       int height = picture.getHeight(this);
       
       File f = new File(picturelokatie);
       long bestandsgrootte = f.length()/1024;
       
       //hoogte en breedte in tekstvelden zetten
       breedtevenster.setText(""+width+" px");
       hoogtevenster.setText(""+height+" px");
       bestandgrootte.setText(""+bestandsgrootte + " KB");
       
       //plaatje als preview laten zien
       previewafbeelding.setIcon(new ImageIcon(picture));
   }
}


Of weten jullie een efficienteren manier om een executable te maken van java applicaties
Hopelijk kunnen jullie me weer een beetje opweg helpen

www.degroot-it.nl


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 13:09

Robtimus

me Robtimus no like you

Probeer eens te starten vanuit een dos scherm, misschien wordt er wel een exceptie geraised. Misschien heb je (stiekem) wat libraries waarvan je niet wist dat ze meegecompiled moesten worden in de exe.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • degroot
  • Registratie: December 2003
  • Niet online
Dan krijg ik idd een error , kan helaas niet vanuit dos selecteren , maar ik heb er dan maar ff een prtscr van gemaakt.

Afbeeldingslocatie: http://img128.imageshack.us/img128/7572/cmd3if.th.jpg
Deze error krijg ik overingens niet in NetBeans te zien

[ Voor 11% gewijzigd door degroot op 13-05-2006 17:59 ]

www.degroot-it.nl


  • mrFoce
  • Registratie: Augustus 2004
  • Laatst online: 21-02 06:28
Je geeft de MAIN niet mee :) ( aan het exe compile programmetje)

[ Voor 40% gewijzigd door mrFoce op 13-05-2006 18:02 ]


  • degroot
  • Registratie: December 2003
  • Niet online
Hoe bedoel je dat dan precies ?
En waar moet ik die aan meegeven?

Als ik de error goed begrijp komt hij vanuit de klasse knopjehandler?

Ik lees nu pas aan het compileer programma , ga ff kijken

EDIT:
Bedoel je dat ik de main class niet aan de exe compiler meegeef?
Hier heb ik namelijk wel de test(main) ingevuld...

[ Voor 44% gewijzigd door degroot op 13-05-2006 18:07 ]

www.degroot-it.nl


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Hij kan de class knopjeHandler niet vinden. Dus er zal waarschijnlijk wel iets fout zitten in je classpath of andere instellingen van het naar exe compileren

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • JKVA
  • Registratie: Januari 2004
  • Niet online

JKVA

Design-by-buzzword fanatic

Hmm, die knopjeHandler is een inner class. Daar wordt een losse .class van gemaakt. Misschien moet je je .class files los meegeven.

@gideon: Het gaat niet fout op de main, maar op de inner class KnopjeHandler



JSmooth maakt toch niks meer dan een exe die als loader dient? Kan het zijn dat je die KnopjeHandler niet in de goeie map hebt staan? (bij de exe)

[ Voor 27% gewijzigd door JKVA op 13-05-2006 19:06 ]

Fat Pizza's pizza, they are big and they are cheezy


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 21-02 03:42
Waar hebben we het nu over -- een Windows executable (.exe) of een JAR (.jar)? In je command shell (dat is géén DOS) ben je bezig met een .jar file. Grote kans dat je gewoon niet alle classes daarin hebt zitten.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Soultaker schreef op zaterdag 13 mei 2006 @ 19:47:
Waar hebben we het nu over -- een Windows executable (.exe) of een JAR (.jar)? In je command shell (dat is géén DOS) ben je bezig met een .jar file. Grote kans dat je gewoon niet alle classes daarin hebt zitten.
offtopic:
Volgens mij heet dat ding officieël een Command Line Interface (CLI) of Shell ;)
En bij mijn weten (@degroot) kun je wel degelijk selecteren (rechtsklikken -> Markeren klikken) en dan kopiëren.

[ Voor 18% gewijzigd door RobIII op 13-05-2006 19:54 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • degroot
  • Registratie: December 2003
  • Niet online
JKVA schreef op zaterdag 13 mei 2006 @ 19:04:
JSmooth maakt toch niks meer dan een exe die als loader dient? Kan het zijn dat je die KnopjeHandler niet in de goeie map hebt staan? (bij de exe)
Het werkt nu....
de CLASSPATH van de applicatie stond een directory te ver :?

Maar nu je over JSmooth begint , ga ik er inderdaad aan twijfelen , want als ik de exe in een andere map kopieer , dan start ie alweer niet op......
Komt dit idd doordat JSmooth er niet helemaal een zelfstandige .exe van maakt??

Zoja , zijn er dan andere manieren om van een java applicatie een echte compleet opzichzelfstaande .exe te maken?

[ Voor 15% gewijzigd door degroot op 13-05-2006 19:53 ]

www.degroot-it.nl


  • Swaptor
  • Registratie: Mei 2003
  • Laatst online: 16-02 22:21

Swaptor

Java Apprentice

@RobIII: ik zie gewoon cmd.exe in de title staan.

@TS: ik denk dat er inderdaad iets niet lekker zit met je classpath. Probeer je innner-classes eens als losse classes te compileren?

Ontdek mij!
Proud NGS member
Stats-mod & forum-dude


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 21-02 03:42
RobIII schreef op zaterdag 13 mei 2006 @ 19:51:
offtopic:
Volgens mij heet dat ding officieël een Command Line Interface (CLI) of Shell ;)
offtopic:
Microsoft noemt het zelf wel de command shell. Maar ja, wat weet Microsoft ervan; die vinden ook dat de system tray de 'notification area' heet. :P

  • JKVA
  • Registratie: Januari 2004
  • Niet online

JKVA

Design-by-buzzword fanatic

Mensen mensen, waar gaat dit over? :?

@degroot: Ik heb ook weleens met JSmooth gewerkt, maar zover ik weet maakt die gewoon een loader die je jar uitvoert. Plus eventueel enkele andere dingen zoals een splash screen.

Fat Pizza's pizza, they are big and they are cheezy


  • DroogKloot
  • Registratie: Februari 2001
  • Niet online

DroogKloot

depenisvanjezus

degroot schreef:
[...]

Zoja , zijn er dan andere manieren om van een java applicatie een echte compleet opzichzelfstaande .exe te maken?
Gebruik een ahead-of-time compiler.

  • degroot
  • Registratie: December 2003
  • Niet online
JKVA schreef op zondag 14 mei 2006 @ 09:50:
Mensen mensen, waar gaat dit over? :?

@degroot: Ik heb ook weleens met JSmooth gewerkt, maar zover ik weet maakt die gewoon een loader die je jar uitvoert. Plus eventueel enkele andere dingen zoals een splash screen.
offtopic:
Idd volgens mij ging dit topic over een probleem...en dat was niet of MS dat nou cli of cmd noemt ;)


JSmooth maakt er dan idd een loader van , want zodra je je exe ergens anders heen verplaatst werkt ie niet meer.
Dacht eerst dat het aan mijn systeem lag , maar na alle reacties hier is het mij wel duidelijk geworden.
DroogKloot schreef op zondag 14 mei 2006 @ 10:46:
[...]


Gebruik een ahead-of-time compiler.
Ik zal ff gaan googlen op die term....dan zal ik er vast wel aan uitkomen.
Heb ook nog wat andere geprobeerd , zal ik ff posten met de resultaten:

exe4j , dit is best een fijn programma, alleen omdat het een trial was kreeg ik bij het aanklikken van mijn exe alleen de melding dat het programma met een trial van exe4j gemaakt was.
Heeft iemand ervaring met dit programma? want als de volledige versie het wel gewoon doet , ben ik wel van plan om die aan te schaffen
jar2exe , dit programma heeft een mooie en duidelijke wizard , maar nadat de wizard voltooid is doet mijn exe helemaal niks.....
Iemand anders hier wel goede ervaringen mee?
Jexepack , ook hier geen resultaat mee te boeken :(

Dus ga nu ff op de ahead-of-time term googlen
thnQ voor de tips

[ Voor 42% gewijzigd door degroot op 14-05-2006 12:35 ]

www.degroot-it.nl


  • JKVA
  • Registratie: Januari 2004
  • Niet online

JKVA

Design-by-buzzword fanatic

Als ik me goed herinner van school, kon JBuilder ook exes maken. Nu we 25 versies verder zijn zal het nog steeds wel kunnen.

Hij kon zelfs je .class files encrypten, leuk bij huiswerk als mensen de boel wilden decompilen. :P

Fat Pizza's pizza, they are big and they are cheezy


Verwijderd

offtopic:
Grappige code maak jij. Het lijkt een beetje op dit forum; een bizarre en onnodige mix van nederlands en engels. Als ik ooit onderhoud zou moeten plegen op dat soort code zou ik gillend gek worden, want ik kan niet 'gokken' hoe een variabele zou kunnen heten. (picturelokatie? resizebreedte? costummaat?) Het is beter of alles engels te houden of alles nederlands, maar niet zo'n vreemde, willekeurige, mix.

Verwijderd

Verwijderd schreef op dinsdag 16 mei 2006 @ 10:32:
offtopic:
Grappige code maak jij. Het lijkt een beetje op dit forum; een bizarre en onnodige mix van nederlands en engels. [..] Het is beter of alles engels te houden of alles nederlands, maar niet zo'n vreemde, willekeurige, mix.
offtopic:
<this space for rent>
Bezoek ook eens qixis.com!

Verwijderd

Verwijderd schreef op dinsdag 16 mei 2006 @ 10:46:
[...]

offtopic:
<this space for rent>
Bezoek ook eens qixis.com!
offtopic:
Dat is geen code die mogelijk onderhouden moet worden en het sluit goed aan bij de rare taalmix van dit forum. Mijn commentaar op de code past niet helemaal bij het onderwerp van deze draad, maar desalniettemin is het een valide en goedbedoelde tip waar de TS wel degelijk profijt van kan hebben.

  • degroot
  • Registratie: December 2003
  • Niet online
Dat komt allemaal omdat ik zo goed ben in namen verzinnen 8)7
En omdat ik altijd snel resultaat wil zien , dus niet echt de moeite neem om mijn variabele in 1 taal te schrijven...

Maar thnQ voor de tips

www.degroot-it.nl

Pagina: 1