[Java] Kan applet niet compilen onder mac OS X

Pagina: 1
Acties:

  • Captain Planet
  • Registratie: April 2005
  • Laatst online: 11-02 17:28
Ok, laten we bij het begin beginnen.

Ik heb voor school een tijdje geleden een applet moeten maken (zie hieronder)
Java:
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
//Java opdracht_blokboek_4 Ziya_heybeli_IK31_34601
//Berekening
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class Heybeli extends Applet {
    private Choice optInvoerCurrency, optUitvoerCurrency;

        TextField txtInvoerBedrag, txtInvoerRate, txtInvoerCurrency, txtUitvoerBedrag, txtUitvoerRate, txtUitvoerCurrency;
        Label lblInvoerBedrag, lblInvoerCurrency, lblInvoerRate, lblUitvoerBedrag, lblUitvoerCurrency, lblUitvoerRate, lblMelding;
        Button knopBereken;
        String[] Land = {"Euro","US $","Mickey $"}, Valuta = {"1.000","1.295","1.200"};

        public void init(){
            setLayout(null);
            setBackground(Color.white);
            setSize(400,250);

            //InvoerBedrag
            lblInvoerBedrag = new Label("Invoerbedrag");
            lblInvoerBedrag.setBounds(50,50,100,20);
            txtInvoerBedrag = new TextField("");
            txtInvoerBedrag.setBounds(50, 80, 100,20);

            //InvoerCurrency
            lblInvoerCurrency = new Label("Invoercurrency");
            lblInvoerCurrency.setBounds(170,50,100,20);
            txtInvoerCurrency = new TextField("");
            txtInvoerCurrency.setBounds(170, 80, 100,20);
            txtInvoerCurrency.setEditable(false);
            optInvoerCurrency = new Choice();
            optInvoerCurrency.addItemListener( new KeuzeHandler() );
            optInvoerCurrency.setBounds(170, 110, 100,20);
            for(int i = 0; i < Land.length; i++){
                optInvoerCurrency.addItem( ""+ Land[i] );
            }

            //InvoerRate
            lblInvoerRate = new Label("Invoerrate");
            lblInvoerRate.setBounds(290,50,100,20);
            txtInvoerRate = new TextField("");
            txtInvoerRate.setEditable(false);
            txtInvoerRate.setBounds(290, 80, 100,20);

            //Fouten!
            lblMelding = new Label("");
            lblMelding.setBounds(50,140,225,20);

            //Knop bereken
            knopBereken = new Button("Bereken");
            knopBereken.setBounds(290,110,100,50);
            knopBereken.addActionListener( new Bereken() );


            //UitvoerBedrag
            lblUitvoerBedrag = new Label("Uitvoerbedrag");
            lblUitvoerBedrag.setBounds(50,170,100,20);
            txtUitvoerBedrag = new TextField("");
            txtUitvoerBedrag.setBounds(50, 200, 100,20);

            //UitvoerCurrency
            lblUitvoerCurrency = new Label("Uitvoercurrency");
            lblUitvoerCurrency.setBounds(170,170,100,20);
            txtUitvoerCurrency = new TextField("");
            txtUitvoerCurrency.setBounds(170, 200, 100,20);
            txtUitvoerCurrency.setEditable(false);
            optUitvoerCurrency = new Choice();
            optUitvoerCurrency.addItemListener( new KeuzeHandleruitvoer() );
            optUitvoerCurrency.setVisible(false);
            optUitvoerCurrency.setBounds(170, 110, 100,20);
            for(int i = 0; i < Land.length; i++){
                optUitvoerCurrency.addItem( ""+ Land[i] );
            }

            //UitvoerRate
            lblUitvoerRate = new Label("Uitvoerrate");
            lblUitvoerRate.setBounds(290,170,100,20);
            txtUitvoerRate = new TextField("");
            txtUitvoerRate.setEditable(false);
            txtUitvoerRate.setBounds(290, 200, 100,20);

            //Alles toevoegen
            add(lblInvoerBedrag);
            add(txtInvoerBedrag);
            add(lblInvoerCurrency);
            add(txtInvoerCurrency);
            add(optInvoerCurrency);
            add(optUitvoerCurrency);
            add(lblInvoerRate);
            add(txtInvoerRate);
            add(lblUitvoerBedrag);
            add(txtUitvoerBedrag);
            add(lblUitvoerCurrency);
            add(txtUitvoerCurrency);
            add(lblUitvoerRate);
            add(txtUitvoerRate);
            add(lblMelding);
            add(knopBereken);
        }

        //Eerste keuze doorvoeren
        class KeuzeHandler implements ItemListener {
            public void itemStateChanged( ItemEvent e){
                lblMelding.setText("");
                int keuze = optInvoerCurrency.getSelectedIndex();
                txtInvoerCurrency.setText(""+Land[keuze]);
                txtInvoerRate.setText(""+Valuta[keuze]);
                optInvoerCurrency.setVisible(false);
                optUitvoerCurrency.setVisible(true);
                repaint();
            }
        }

        class KeuzeHandleruitvoer implements ItemListener {
            public void itemStateChanged( ItemEvent e){
                int keuze = optUitvoerCurrency.getSelectedIndex();
                txtUitvoerCurrency.setText(""+Land[keuze]);
                txtUitvoerRate.setText(""+Valuta[keuze]);
                optInvoerCurrency.setVisible(true);
                optUitvoerCurrency.setVisible(false);
                repaint();
            }
        }

        class Bereken implements ActionListener {
            public void actionPerformed( ActionEvent e ) {
                if(txtInvoerCurrency.getText().equals("") && txtUitvoerCurrency.getText().equals("")){
                    lblMelding.setText("Geen Invoer- of Uitvoercurrency ingevuld!");
                    lblMelding.setForeground(Color.red);
                }
                else{
                    //Controle of er iets niet verkeerd gaat
                    try {
                        lblMelding.setText("");
                        String strInvoerBedrag = txtInvoerBedrag.getText(), strInvoerRate = txtInvoerRate.getText(), strUitvoerRate = txtUitvoerRate.getText();
                        double InvoerBedrag = Double.parseDouble(strInvoerBedrag), InvoerRate = Double.parseDouble(strInvoerRate),UitvoerRate = Double.parseDouble(strUitvoerRate);
                        double som = InvoerBedrag / InvoerRate / UitvoerRate;
                        double som2 = Math.rint(som*100)/100;
                        lblMelding.setText("Het bedrag is omgerekend!");
                        lblMelding.setForeground(Color.black);
                        txtUitvoerBedrag.setText("" + som2);
                    }
                    catch(Exception ex){
                        lblMelding.setText("Invoerbedrag moet numeric zijn!");
                        lblMelding.setForeground(Color.red);
                    }
                }
                repaint();
            }
        }
}


Ik kom dit probeem tegen, onder windows wil de applet gewoon runnen en werkt het gewoon. maar onder OSX wil het niet werken.

Om het werkend te krijgen onder OSX heb ik geprobeerd.
Ik heb het forum/google doorzocht maar kon maar geen tips vinden die het probleem konden oplossen.
Ik heb onder de terminal geprobeert met
javac Heybeli.java ook heb ik geprobeerd javac -cp Heybeli.java dit deed het wel. maar wou ik de applet runnen kreeg ik de melding
Exception in thread "main" java.lang.NoSuchMethodError: main
Ik heb xcode geprobeerd en hij wou niet eens de appilicatie runnen(tenminste als build compilen betekent) de optie was greyed out.

ik heb exclipse geprobeerd kreeg steeds deze melding
Exception in thread "main" java.lang.NoSuchMethodError: main
Uiteindelijk heb ik ook nog textmate geprobeerd maar ook deze wou niet werken
Exception in thread "main" java.lang.NoSuchMethodError: main

Program exited with status 1.
dit was de melding, gek word je ervan |:( , maar weet iemand de oplossing die is zeer welkom 8)7

You and I have memories longer than the road ahead


  • MNeMoNiCS
  • Registratie: Mei 2002
  • Laatst online: 16-10-2012
Een applet voer je niet uit met java (deze gaat namelijk op zoek naar een main methode), maar ofwel door hem op te nemen in een html pagina, ofwel door hem uit te voeren met appletviewer.

  • Captain Planet
  • Registratie: April 2005
  • Laatst online: 11-02 17:28
maar dat doe ik toch met TextMate , ik run mijn applet. Onder Windows gebruikte ik hiervoor textpad. weet jij dan hoe ik deze applet kan runnen

You and I have memories longer than the road ahead


  • MNeMoNiCS
  • Registratie: Mei 2002
  • Laatst online: 16-10-2012
Op de mac weet ik het niet, onder windows of unix voer je gewoon

appletviewer Heybeli

uit in de command prompt / shell.

PS: volgens mij staan je naam, adres en telefoonnummer in het begin commentaar van je sourcecode.

  • Captain Planet
  • Registratie: April 2005
  • Laatst online: 11-02 17:28
Whoeps, ff mijn naw gegevens bedankt voor de oplettendheid. Ik heb onder mijn terminal die commando geprobeert helaas werkt dit niet.

Hij start dan een applet voor een paar tellen waarna hij weer verdwijnt en geeft geen error code. volgens mij moet ik maar proberen mijn java bestand laten omzetten in een html file.

You and I have memories longer than the road ahead


  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Je moet voor appletviewer idd even een simpele html file maken met een <applet> tag om de applet te laten zien.

All my posts are provided as-is. They come with NO WARRANTY at all.


Verwijderd

fener33 schreef op dinsdag 19 december 2006 @ 02:32:
volgens mij moet ik maar proberen mijn java bestand laten omzetten in een html file.
Nee je dient je classes simpelweg in te laden in een webbrowser (die doorgaans een ingebouwde applet viewer heeft)

En hiervoor gebruik je overigens niet de "applet" tags maar de "embed".
(sinds java 1.4 is er tooltje meegeleverd die de ouderwetse applet tag herschrijft naar embed)

  • Captain Planet
  • Registratie: April 2005
  • Laatst online: 11-02 17:28
Ok dit werkt maar ik heb nu dit gedaan

[code=html]
<HTML>
<HEAD>
<TITLE> A Simple Program </TITLE>
</HEAD>
<BODY>

Here is the output of my program:
<APPLET CODE="Heybeli.class" WIDTH=400 HEIGHT=200>
</APPLET>
</BODY>
</HTML>
[/code=html]

Maar is er geen manier om net als met textpad een applet te runnen zonder enn html file op te starten. Onder windows runde ik gewoon mijn source code met textpad en er werd een applet opgestart. kan dit niet onder OSX

//EDIT

Even een verduidelijking, ik bedoel dat als ik een Sourcecode compileer en dan run dat er automatisch een appletviewer wordt gestart net als onder Windows is dit mogelijk. Want onder Eclipse krijg ik deze meldingen als ik een appletviewer wil starten:

java.lang.ClassNotFoundException
java.io.FileNotFoundException

[ Voor 27% gewijzigd door Captain Planet op 19-12-2006 16:57 . Reden: update ]

You and I have memories longer than the road ahead


  • Captain Planet
  • Registratie: April 2005
  • Laatst online: 11-02 17:28
Kleine kick, Ik ben zelf niet veel verder gekomen ik heb netbeans 5 geprobeerd bron: Netbeans

Dit heb ik gevolgd maar ben niet verder gekomen

You and I have memories longer than the road ahead

Pagina: 1