[JAVA] verschil Netbeans linux/windows?

Pagina: 1
Acties:

  • ljsquare
  • Registratie: April 2006
  • Laatst online: 07-09 23:36
Hallo,

Om mijn kennis uit te breiden ben ik gaan spelen met de tutorial Creating a Custom Java Desktop Database Application.

Nu gebruik ik op mijn desktop PC ubuntu 9.10 en heb ik netbeans (versie 6.7.1) los geïnstalleerd (dus niet via de repositories). Tevens ook de JDK.
Na het maken van de applicatie (volgens de tutorial, Creating the Application Skeleton), zou ik hem direct kunnen draaien. Maar ik krijg een melding dat er een fout zit in de applicatie, bij de CustomersRecordsView

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
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
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
/*
 * CustomerRecordsView.java
 */

package customerrecords;

import org.jdesktop.application.Action;
import org.jdesktop.application.ResourceMap;
import org.jdesktop.application.SingleFrameApplication;
import org.jdesktop.application.FrameView;
import org.jdesktop.application.TaskMonitor;
import org.jdesktop.application.Task;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import javax.persistence.RollbackException;
import javax.swing.Timer;
import javax.swing.Icon;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import org.jdesktop.beansbinding.AbstractBindingListener;
import org.jdesktop.beansbinding.Binding;
import org.jdesktop.beansbinding.PropertyStateEvent;

/**
 * The application's main frame.
 */
public class CustomerRecordsView extends FrameView {
    
    public CustomerRecordsView(SingleFrameApplication app) {
        super(app);

        initComponents();

        // status bar initialization - message timeout, idle icon and busy animation, etc
        ResourceMap resourceMap = getResourceMap();
        int messageTimeout = resourceMap.getInteger("StatusBar.messageTimeout");
    messageTimer = new Timer(messageTimeout, new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                statusMessageLabel.setText("");
            }
        });
    messageTimer.setRepeats(false);
        int busyAnimationRate = resourceMap.getInteger("StatusBar.busyAnimationRate");
        for (int i = 0; i < busyIcons.length; i++) {
            busyIcons[i] = resourceMap.getIcon("StatusBar.busyIcons[" + i + "]");
        }
        busyIconTimer = new Timer(busyAnimationRate, new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                busyIconIndex = (busyIconIndex + 1) % busyIcons.length;
                statusAnimationLabel.setIcon(busyIcons[busyIconIndex]);
            }
        }); 
        idleIcon = resourceMap.getIcon("StatusBar.idleIcon");
        statusAnimationLabel.setIcon(idleIcon);
        progressBar.setVisible(false);

        // connecting action tasks to status bar via TaskMonitor
        TaskMonitor taskMonitor = new TaskMonitor(getApplication().getContext());
        taskMonitor.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
            public void propertyChange(java.beans.PropertyChangeEvent evt) {
                String propertyName = evt.getPropertyName();
                if ("started".equals(propertyName)) {
                    if (!busyIconTimer.isRunning()) {
                        statusAnimationLabel.setIcon(busyIcons[0]);
                        busyIconIndex = 0;
                        busyIconTimer.start();
                    }
                    progressBar.setVisible(true);
                    progressBar.setIndeterminate(true);
                } else if ("done".equals(propertyName)) {
                    busyIconTimer.stop();
                    statusAnimationLabel.setIcon(idleIcon);
                    progressBar.setVisible(false);
                    progressBar.setValue(0);
                } else if ("message".equals(propertyName)) {
                    String text = (String)(evt.getNewValue());
                    statusMessageLabel.setText((text == null) ? "" : text);
                    messageTimer.restart();
                } else if ("progress".equals(propertyName)) {
                    int value = (Integer)(evt.getNewValue());
                    progressBar.setVisible(true);
                    progressBar.setIndeterminate(false);
                    progressBar.setValue(value);
                }
            }
        });

        // tracking table selection
        masterTable.getSelectionModel().addListSelectionListener(
            new ListSelectionListener() {
                public void valueChanged(ListSelectionEvent e) {
                    firePropertyChange("recordSelected", !isRecordSelected(), isRecordSelected());
                }
            });
        detailTable.getSelectionModel().addListSelectionListener(
            new ListSelectionListener() {
                public void valueChanged(ListSelectionEvent e) {
                    firePropertyChange("detailRecordSelected", !isDetailRecordSelected(), isDetailRecordSelected());
                }
            }); 

        // tracking changes to save
        bindingGroup.addBindingListener(new AbstractBindingListener() {
            @Override
            public void targetChanged(Binding binding, PropertyStateEvent event) {
                // save action observes saveNeeded property
                setSaveNeeded(true);
            }
        });

        // have a transaction started
        entityManager.getTransaction().begin();
    }


    public boolean isSaveNeeded() {
        return saveNeeded;
    }

    private void setSaveNeeded(boolean saveNeeded) {
        if (saveNeeded != this.saveNeeded) {
            this.saveNeeded = saveNeeded;
            firePropertyChange("saveNeeded", !saveNeeded, saveNeeded);
        }
    }

    public boolean isRecordSelected() {
        return masterTable.getSelectedRow() != -1;
    }
    
    public boolean isDetailRecordSelected() {
        return detailTable.getSelectedRow() != -1;
    }

    @Action
    public void newRecord() {
        java.lang.Object O = new java.lang.Object();
        entityManager.persist(O);
        list.add(O);
        int row = list.size()-1;
        masterTable.setRowSelectionInterval(row, row);
        masterTable.scrollRectToVisible(masterTable.getCellRect(row, 0, true));
        setSaveNeeded(true);
    }

    @Action(enabledProperty = "recordSelected")
    public void deleteRecord() {
        int[] selected = masterTable.getSelectedRows();
        List<java.lang.Object> toRemove = new ArrayList<java.lang.Object>(selected.length);
        for (int idx=0; idx<selected.length; idx++) {
            java.lang.Object O = list.get(masterTable.convertRowIndexToModel(selected[idx]));
            toRemove.add(O);
            entityManager.remove(O);
        }
        list.removeAll(toRemove);
        setSaveNeeded(true);
    }
    
    @Action(enabledProperty = "recordSelected")
    public void newDetailRecord() {
        int index = masterTable.getSelectedRow();
        java.lang.Object O = list.get(masterTable.convertRowIndexToModel(index));
        Collection<java.lang.Object> os = O.get_joinCollectionCapital_();
        if (os == null) {
            os = new LinkedList<java.lang.Object>();
            O.set_joinCollectionCapital_((List)os);
        }
        java.lang.Object o = new java.lang.Object();
        entityManager.persist(o);
        o.set_joinCapital_(O);
        os.add(o);
        masterTable.clearSelection();
        masterTable.setRowSelectionInterval(index, index);
        int row = os.size()-1;
        detailTable.setRowSelectionInterval(row, row);
        detailTable.scrollRectToVisible(detailTable.getCellRect(row, 0, true));
        setSaveNeeded(true);
    }

    @Action(enabledProperty = "detailRecordSelected")
    public void deleteDetailRecord() {
        int index = masterTable.getSelectedRow();
        java.lang.Object O = list.get(masterTable.convertRowIndexToModel(index));
        Collection<java.lang.Object> os = O.get_joinCollectionCapital_();
        int[] selected = detailTable.getSelectedRows();
        List<java.lang.Object> toRemove = new ArrayList<java.lang.Object>(selected.length);
        for (int idx=0; idx<selected.length; idx++) {
            selected[idx] = detailTable.convertRowIndexToModel(selected[idx]);
            int count = 0;
            Iterator<java.lang.Object> iter = os.iterator();
            while (count++ < selected[idx]) iter.next();
            java.lang.Object o = iter.next();
            toRemove.add(o);
            entityManager.remove(o);
        }
        os.removeAll(toRemove);
        masterTable.clearSelection();
        masterTable.setRowSelectionInterval(index, index);
        setSaveNeeded(true);
    }

// Code afgebroken

Bij de regels 170,173,177 en 190 geeft hij de foutmelding "cannot find symbol, symbol: method get_joinCollectionCapital_(), location: java.lang.Object"

Maar... als ik deze tutorial onder windows uitvoer, ook met netbeans 6.7.1, krijg ik geen foutmelding en werkt het progje prima 8)7

Zit er een verschil tussen linux en windows mbt java?? Ik heb google al geprobeerd, maar er kwam niets uit dat dit probleem oplost.

Hopelijk kan een van jullie mij helpen. Ik heb overigens nog niets zelf veranderd, ben nog steeds bij de stap "Creating the Application Skeleton"

Laurens-Jan Merkx


  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Ben je zeker dat het goed werkt op Windows? Want als ik het zo zie moet het daar op crashen namelijk. Die methodes bestaan gewoon niet in de Object class.

Going for adventure, lots of sun and a convertible! | GMT-8


  • ljsquare
  • Registratie: April 2006
  • Laatst online: 07-09 23:36
Snake schreef op donderdag 19 november 2009 @ 16:15:
Ben je zeker dat het goed werkt op Windows? Want als ik het zo zie moet het daar op crashen namelijk. Die methodes bestaan gewoon niet in de Object class.
Nou dat is dus het rare, op windows werkt de tutorial wel (nog niet verder gegaan dan de 1e stap), bij linux (ubuntu) niet, daar krijg ik die specifieke foutmelding

Laurens-Jan Merkx


  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Die functie op regel 190 moet geen java.lang.Object teruggeven maar een Customers object :)

Zie ook de oplossing: http://netbeans.org/files.../2016/CustomerRecords.zip

[ Voor 32% gewijzigd door Snake op 19-11-2009 16:22 ]

Going for adventure, lots of sun and a convertible! | GMT-8


  • ljsquare
  • Registratie: April 2006
  • Laatst online: 07-09 23:36
Ik zie het nu ook het verschil:
windows
Java:
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
 @Action(enabledProperty = "recordSelected")
    public void newDetailRecord() {
        int index = masterTable.getSelectedRow();
        customerrecords.Customers c = list.get(masterTable.convertRowIndexToModel(index));
        Collection<customerrecords.Orders> os = c.getOrdersList();
        if (os == null) {
            os = new LinkedList<customerrecords.Orders>();
            c.setOrdersList((List)os);
        }
        customerrecords.Orders o = new customerrecords.Orders();
        entityManager.persist(o);
        o.setCustomerId(c);
        os.add(o);
        masterTable.clearSelection();
        masterTable.setRowSelectionInterval(index, index);
        int row = os.size()-1;
        detailTable.setRowSelectionInterval(row, row);
        detailTable.scrollRectToVisible(detailTable.getCellRect(row, 0, true));
        setSaveNeeded(true);
    }

    @Action(enabledProperty = "detailRecordSelected")
    public void deleteDetailRecord() {
        int index = masterTable.getSelectedRow();
        customerrecords.Customers c = list.get(masterTable.convertRowIndexToModel(index));
        Collection<customerrecords.Orders> os = c.getOrdersList();
        int[] selected = detailTable.getSelectedRows();
        List<customerrecords.Orders> toRemove = new ArrayList<customerrecords.Orders>(selected.length);
        for (int idx=0; idx<selected.length; idx++) {
            selected[idx] = detailTable.convertRowIndexToModel(selected[idx]);
            int count = 0;
            Iterator<customerrecords.Orders> iter = os.iterator();
            while (count++ < selected[idx]) iter.next();
            customerrecords.Orders o = iter.next();
            toRemove.add(o);
            entityManager.remove(o);
        }
        os.removeAll(toRemove);
        masterTable.clearSelection();
        masterTable.setRowSelectionInterval(index, index);
        setSaveNeeded(true);
    }

Linux:
Java:
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
@Action(enabledProperty = "recordSelected")
    public void newDetailRecord() {
        int index = masterTable.getSelectedRow();
        java.lang.Object O = list.get(masterTable.convertRowIndexToModel(index));
        Collection<java.lang.Object> os = O.get_joinCollectionCapital_();
        if (os == null) {
            os = new LinkedList<java.lang.Object>();
            O.set_joinCollectionCapital_((List)os);
        }
        java.lang.Object o = new java.lang.Object();
        entityManager.persist(o);
        o.set_joinCapital_(O);
        os.add(o);
        masterTable.clearSelection();
        masterTable.setRowSelectionInterval(index, index);
        int row = os.size()-1;
        detailTable.setRowSelectionInterval(row, row);
        detailTable.scrollRectToVisible(detailTable.getCellRect(row, 0, true));
        setSaveNeeded(true);
    }

    @Action(enabledProperty = "detailRecordSelected")
    public void deleteDetailRecord() {
        int index = masterTable.getSelectedRow();
        java.lang.Object O = list.get(masterTable.convertRowIndexToModel(index));
        Collection<java.lang.Object> os = O.get_joinCollectionCapital_();
        int[] selected = detailTable.getSelectedRows();
        List<java.lang.Object> toRemove = new ArrayList<java.lang.Object>(selected.length);
        for (int idx=0; idx<selected.length; idx++) {
            selected[idx] = detailTable.convertRowIndexToModel(selected[idx]);
            int count = 0;
            Iterator<java.lang.Object> iter = os.iterator();
            while (count++ < selected[idx]) iter.next();
            java.lang.Object o = iter.next();
            toRemove.add(o);
            entityManager.remove(o);
        }
        os.removeAll(toRemove);
        masterTable.clearSelection();
        masterTable.setRowSelectionInterval(index, index);
        setSaveNeeded(true);
    }


Maar nu rest mijn vraag, hoe komt dit? Netbeans heeft zelf deze code gegenereerd, ik heb zelf nog geen enkele letter code ingevuld. Kan dit een bug zijn of een bepaalde class,object, o.i.d niet aanwezig zijn?

Maar iig bedankt voor de moeite _/-\o_

Laurens-Jan Merkx


  • Standeman
  • Registratie: November 2000
  • Nu online

Standeman

Prutser 1e klasse

Snake schreef op donderdag 19 november 2009 @ 16:22:
Die functie op regel 190 moet geen java.lang.Object teruggeven maar een Customers object :)

Zie ook de oplossing: http://netbeans.org/files.../2016/CustomerRecords.zip
Voor zover ik weet zou die regel op windows ook niet kunnen compileren.

Ah, al opgelost. De code werd anders gegenereerd dan bij de linux versie.

[ Voor 10% gewijzigd door Standeman op 19-11-2009 16:29 ]

The ships hung in the sky in much the same way that bricks don’t.


Acties:
  • 0 Henk 'm!

  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
ljsquare schreef op donderdag 19 november 2009 @ 16:26:
Maar nu rest mijn vraag, hoe komt dit? Netbeans heeft zelf deze code gegenereerd, ik heb zelf nog geen enkele letter code ingevuld. Kan dit een bug zijn of een bepaalde class,object, o.i.d niet aanwezig zijn?

Maar iig bedankt voor de moeite _/-\o_
Probeer het nog een keer, als het nog steeds fout gaat is het denk ik aan te raden om een bug te melden bij Netbeans. Ik zie echter niet in hoe het draaien op Linux en Windows verschil zou moeten maken. Dit lijkt mij iets dat puur binnen de Netbeans Java code wordt afgehandeld en dus platform onafhankelijk zou moeten zijn.

Acties:
  • 0 Henk 'm!

  • Standeman
  • Registratie: November 2000
  • Nu online

Standeman

Prutser 1e klasse

Remus schreef op vrijdag 20 november 2009 @ 09:02:
[...]


Probeer het nog een keer, als het nog steeds fout gaat is het denk ik aan te raden om een bug te melden bij Netbeans. Ik zie echter niet in hoe het draaien op Linux en Windows verschil zou moeten maken. Dit lijkt mij iets dat puur binnen de Netbeans Java code wordt afgehandeld en dus platform onafhankelijk zou moeten zijn.
Naar mijn ervaring is javacode ongeveer net zo platform onafhankelijk als de programmeur. Je merkt vaak dat wanneer een developer voornamelijk op 1 platoform ontwikkeld (zeg windows), dat er op andere ondersteunde platforms een stuk slechter wordt getest.

The ships hung in the sky in much the same way that bricks don’t.

Pagina: 1