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
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
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"
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

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