summaryrefslogtreecommitdiffstats
path: root/Master/Reference Architectures and Patterns/hjp5/html/k100015.html
blob: 06ce11742a9a23ec5ad0a081f5efae2b12725c62 (plain)
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
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
<html>
<head>
<title>
Handbuch der Java-Programmierung, 5. Auflage
</title>
</head>
<body>
<a name="startofbody"></a>
<script language="JavaScript" src="hjp4lib.js">
</script>
<script language="JavaScript">
installKbdHandler("97,#startofbody;101,#endofbody;116,cover.html;122,k100003.html;115,search.html;105,index.html;100,JDKDOCS;112,APIDOCS;104,k100013.html;106,k100014.html;107,k100016.html;108,k100018.html");
</script>
<table border=0 cellpadding=0 cellspacing=1 width="100%">
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html">&nbsp;Titel&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html">&nbsp;Inhalt&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html">&nbsp;Suchen&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html">&nbsp;Index&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()">&nbsp;DOC&nbsp;</a>
<td align="right">Handbuch der Java-Programmierung, 5. Auflage
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100013.html">&nbsp;&lt;&lt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100014.html">&nbsp;&nbsp;&lt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100016.html">&nbsp;&nbsp;&gt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100018.html">&nbsp;&gt;&gt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()">&nbsp;API&nbsp;</a>
<td align="right">Kapitel 2 - Schnelleinstieg
</table>
<hr>


<!-- Section -->
<a name="sectlevel2id002002"></a>
<h2>2.2 <a name="ixa100150">Erste Gehversuche</a></h2>
<hr>
<ul>
<li><a href="k100015.html#sectlevel2id002002">2.2 Erste Gehversuche</a>
<ul>
<li><a href="k100015.html#sectlevel3id002002001">2.2.1 Quelltext erstellen, &uuml;bersetzen und ausf&uuml;hren</a>
<ul>
<li><a href="k100015.html#sectlevel4id002002001001">1. Vorbereitung</a>
<li><a href="k100015.html#sectlevel4id002002001002">2. Erstellen des Quelltextes </a>
<li><a href="k100015.html#sectlevel4id002002001003">3. &Uuml;bersetzen des Quelltextes</a>
<li><a href="k100015.html#sectlevel4id002002001004">4. Ausf&uuml;hren des erzeugten Programms</a>
<li><a href="k100015.html#sectlevel4id002002001005">5. Beenden des Programms</a>
</ul>
<li><a href="k100015.html#beispielprogramme">2.2.2 Die Beispielprogramme</a>
<ul>
<li><a href="k100015.html#sectlevel4id002002002001">Starten der Beispielprogramme</a>
<li><a href="k100015.html#sectlevel4id002002002002">Zus&auml;tzlich erforderliche Dateien</a>
</ul>
</ul>
</ul>
<hr>

<p>
Falls Sie die ersten Gehversuche in Java machen wollen, ohne erst
viele Grundlagen lernen zu m&uuml;ssen, oder wenn Sie einfach nur
daran interessiert sind, m&ouml;glichst schnell Ihr erstes Java-Programm
auszuf&uuml;hren, dann sollten Sie den vorliegenden Abschnitt lesen.
Sie erfahren hier in komprimierter Form, wie Sie ein einfaches Programm
erstellen und mit den Werkzeugen des JDK &uuml;bersetzen und ausf&uuml;hren.
Zus&auml;tzlich gibt es einige Hinweise, um einfache Ein- und Ausgaben
durchzuf&uuml;hren. 

<!-- Section -->

<a name="sectlevel3id002002001"></a>
<h3>2.2.1 Quelltext erstellen, &uuml;bersetzen und ausf&uuml;hren
</h3>


<!-- Section -->
<a name="sectlevel4id002002001001"></a>
<h4>1. Vorbereitung </h4>

<p>
Installieren Sie das JDK wie in <a href="k100014.html#jdkinstallation">Abschnitt 2.1</a>
beschrieben, und sorgen Sie daf&uuml;r, dass in Ihrer Pfadangabe das
Verzeichnis <font color="#660099">\jdk1.6\bin</font> enthalten ist.
Falls Sie das JDK nicht nach <font color="#660099">c:\jdk1.6</font>
installiert haben, passen Sie die Pfadangaben entsprechend an. Ein
Aufruf von <font color="#000077"><tt>PATH</tt></font> zeigt an, ob
der Pfad korrekt gesetzt ist, durch Eingabe von <font color="#000077"><tt>java
-version</tt></font> k&ouml;nnen Sie die installierte JDK-Version
&uuml;berpr&uuml;fen: 
<p>
<a name="imageid002001"></a>
<img src="images/FirstSteps1.gif">
<p>

<p><i>
Abbildung 2.1: Ist das JDK korrekt installiert?</i></p>
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100%>
<tr>
<td width=1 align=left valign=top bgcolor="#FF9900"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=1></td>
<td width=1 align=left valign=top bgcolor="#FF9900"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top width=1000>

<p>
Seit Java 5.0 unterst&uuml;tzen nicht nur der Interpreter, sondern
auch der Java-Compiler den Schalter <a href="index_0.html#ixb100148"><font color=#000080><tt>-version</tt></font></a>.
Durch Eingabe von <font color="#000077"><tt>javac -version</tt></font>
k&ouml;nnen Sie also &uuml;berpr&uuml;fen, ob auch der Java-Compiler
in der aktuellsten Version vorliegt. &Auml;ltere Compiler-Versionen
geben eine Fehlermeldung aus.</td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top>
<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#FF9900">
<tr>
<td><font color="#FFFFFF">&nbsp;JDK1.1-6.0&nbsp;</font></td>
</tr>
</table>
</td>
<td width=1 align=left valign=top bgcolor="#FF9900"><img src="trp1_1.gif"></td>
</tr>
</table>


<!-- Section -->
<a name="sectlevel4id002002001002"></a>
<h4>2. Erstellen des Quelltextes<a name="ixa100151"></a> <a name="ixa100152"></a>
</h4>

<p>
Erstellen Sie mit einem beliebigen Texteditor die folgende Datei <font color="#660099">Hello.java</font>:
<a name="helloworld"></a>

<p>
<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#DDDDDD">
<tr>
<td valign=top>
<font color="#000055">
<pre>
<font color="#555555">001 </font><font color="#00AA00">/* Hello.java */</font>
<font color="#555555">002 </font>
<font color="#555555">003 </font><font color="#0000AA">public</font> <font color="#0000AA">class</font> Hello
<font color="#555555">004 </font>{
<font color="#555555">005 </font>  <font color="#0000AA">public</font> <font color="#0000AA">static</font> <font color="#006699">void</font> main(String[] args)
<font color="#555555">006 </font>  {
<font color="#555555">007 </font>    System.out.println(<font color="#0000FF">"Hello, world"</font>);
<font color="#555555">008 </font>  }
<font color="#555555">009 </font>}</pre>
</font>
</td>
<td valign=top align=right>
<a href="../examples/Hello.java"><font color="#000055" size=-1>Hello.java</font></a></td>
</tr>
</table>
<i>
Listing 2.1: Hello, world</i></p>

<p>
Die korrekt erstellte Datei enth&auml;lt die Definition der Klasse
<font color="#000077"><tt>Hello</tt></font> mit der Methode <a name="ixa100153"><a href="index_m.html#ixb100150"><font color=#000080><tt>main</tt></font></a></a>,
die das Hauptprogramm unserer Applikation enth&auml;lt. Bitte geben
Sie die am Anfang jeder Zeile stehenden Zeilennummern <i>nicht</i>
mit ein. Sie dienen lediglich dazu, auf Teile des Listings verweisen
zu k&ouml;nnen und werden beim Erstellen des Buchs automatisch generiert.
Der Java-Compiler kann damit nichts anfangen. 
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100%>
<tr>
<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=1></td>
<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top width=1000>

<p>
Achten Sie bei der Vergabe der Datei- und Klassennamen auf korrekte
Gro&szlig;-/Kleinschreibung. Sowohl der Compiler als auch das Laufzeitsystem
erwarten, dass die Hauptklasse einer Quelldatei genauso geschrieben
wird wie der Name der Datei, in der sie sich befindet. Der Dateiname
unserer Beispielklasse <font color="#000077"><tt>Hello</tt></font>
lautet daher <font color="#660099">Hello.java</font> und nicht <font color="#660099">hello.java</font>,
<font color="#660099">HELLO.JAVA</font> oder <font color="#660099">HELLO.JAV</font>.
Erstellen Sie die Datei nicht auf Systemen oder Laufwerken (beispielsweise
im Netz), die keine langen Dateinamen unterst&uuml;tzen. Der Compiler
w&uuml;rde die Datei in diesem Fall nicht finden.</td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top>
<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#CC0000">
<tr>
<td><font color="#FFFFFF">&nbsp;Warnung&nbsp;</font></td>
</tr>
</table>
</td>
<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
</tr>
</table>

<p>
Sie k&ouml;nnen zum Editieren beispielsweise <i>notepad</i> oder <i>edit</i>
(unter Windows) oder <i>vi</i> oder <i>Emacs</i> (gibt es f&uuml;r
UNIX und Windows) verwenden. Ein guter Windows-Editor, der fast ebensoviel
kann wie seine professionellen (und sehr viel teureren) Br&uuml;der,
ist <i>TextPad</i> von <i>Helios Software Solutions</i>. Eine Testversion
kann von <a href="http://www.textpad.com">http://www.textpad.com</a>
heruntergeladen werden, die Vollversion ist f&uuml;r wenig Geld zu
haben. Wer ein wenig Einarbeitungszeit, Konfigurationsaufwand und
das Erlernen von Grundkenntnissen in LISP nicht scheut, der sollte
sich <i>Emacs</i> n&auml;her ansehen. Wenn Sie statt eines Editor
lieber mit einer auf Java abgestimmten Integrierten Entwicklungsumgebung
(IDE) arbeiten ist das freie Eclipse-Framework oder die IntelliJ IDEA
eventuell das richtige f&uuml;r Sie. Beide sind ebenfalls vollst&auml;ndig
in Java geschrieben und liegen als Testversion der DVD bei. 
<p>
<a name="imageid002002"></a>
<img src="images/FirstSteps2.gif">
<p>

<p><i>
Abbildung 2.2: Hello.java im Windows-Notepad</i></p>
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100%>
<tr>
<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=1></td>
<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top width=1000>

<p>
Werden die (wenig empfehlenswerten) Windows-Editoren <i>notepad</i>
oder <i>edit</i> verwendet, kann man als Anf&auml;nger unter Umst&auml;nden
einige &Uuml;berraschungen erleben: 
<ul>
<li><i>notepad</i> h&auml;ngt beim ersten Speichern einer Datei die
Erweiterung <font color="#660099">.txt</font> an den Dateinamen an.
Aus <font color="#660099">Test1.java</font> wird also <font color="#660099">Test1.java.txt</font>.
Eine solche Datei wird von <font color="#000077"><tt>javac</tt></font>
nat&uuml;rlich nicht mehr akzeptiert. Nach dem ersten Speichern muss
also zun&auml;chst durch Umbenennen im Explorer der korrekte Dateiname
hergestellt werden. Wird die Datei wiederholt ge&ouml;ffnet und gespeichert,
treten diese Probleme nicht mehr auf. Alternativ kann beim ersten
Speichern der Dateiname in Anf&uuml;hrungszeichen gesetzt werden,
also &#187;Test1.java&#171; geschrieben werden.
<li>Wird <i>edit</i> verwendet, kann es zwei Probleme geben. Erstens
verwendet das Programm den MS-DOS-Zeichensatz und versieht so Programme
mit Windows-Oberfl&auml;che mit unbrauchbaren Umlauten (sie w&auml;ren
dann nur f&uuml;r Windows-Konsolenanwendungen korrekt). Zweitens unterst&uuml;tzt
<i>edit</i> unter NT 4 keine langen Dateinamen. Das Programm w&uuml;rde
beispielsweise die Datei <font color="#660099">Test1.java</font> als
<font color="#660099">TEST1.JAV</font> abspeichern und somit ebenfalls
f&uuml;r den Compiler unerreichbar machen.
</ul>
</td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top>
<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#CC0000">
<tr>
<td><font color="#FFFFFF">&nbsp;Warnung&nbsp;</font></td>
</tr>
</table>
</td>
<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
</tr>
</table>


<!-- Section -->
<a name="sectlevel4id002002001003"></a>
<h4>3. <a name="ixa100154">&Uuml;bersetzen des Quelltextes</a> </h4>

<p>
&Uuml;bersetzen Sie die Datei mit dem Kommando <a name="ixa100155"><a href="index_j.html#ixb100152"><font color=#000080><tt>javac</tt></font></a></a>
(so hei&szlig;t der Java-Compiler des JDK). Wenn Sie keinen Fehler
gemacht haben, wird der Compileraufruf kommentarlos akzeptiert, und
Sie sehen wieder den DOS-Prompt: 
<p>
<a name="imageid002003"></a>
<img src="images/FirstSteps3.gif">
<p>

<p><i>
Abbildung 2.3: &Uuml;bersetzen von Hello.java</i></p>
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100%>
<tr>
<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top width=1000>

<p>
Alle wichtigen Werkzeuge des JDK arbeiten kommandozeilenorientiert.
Sie haben also keine grafische Oberfl&auml;che, sondern werden in
einer DOS-Box aufgerufen und durch Aufrufparameter gesteuert. Eine
integrierte Entwicklungsumgebung mit integriertem Editor, Compiler
und Debugger bietet das JDK nicht. Eine DOS-Box wird unter Windows
9x &uuml;ber den Eintrag &#187;MS-DOS-Eingabeaufforderung&#171; aufgerufen,
der im Startmen&uuml; unter &#187;Programme&#171; liegt. Eine &Uuml;bersicht
&uuml;ber die JDK-Werkzeuge und ihre Bedienung finden Sie in <a href="k100317.html#kapitelwerkzeuge">Kapitel 51</a>.</td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top>
<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#000077">
<tr>
<td><font color="#FFFFFF">&nbsp;Hinweis&nbsp;</font></td>
</tr>
</table>
</td>
<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
</tr>
</table>
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100%>
<tr>
<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=1></td>
<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top width=1000>

<p>
Falls Sie Programme schreiben, in denen die sprachlichen Erweiterungen
der Java-Versionen 1.4 oder h&ouml;her verwendet werden, m&uuml;ssen
Sie unter Umst&auml;nden eine der Compileroptionen <a name="ixa100156"><a href="index_0.html#ixb100153"><font color=#000080><tt>-source 1.4</tt></font></a></a>
bzw. <a name="ixa100157"><a href="index_0.html#ixb100154"><font color=#000080><tt>-source 1.5</tt></font></a></a>
angeben, damit der Compiler die Programme &uuml;bersetzen kann. Dies
betrifft vor allem die in <a href="k100044.html#assertanweisung">Abschnitt 6.4.1</a>
beschriebenen Assertions und einige der mit der J2SE 5.0 eingef&uuml;hrten
Spracherweiterungen. </td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top>
<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#CC0000">
<tr>
<td><font color="#FFFFFF">&nbsp;Warnung&nbsp;</font></td>
</tr>
</table>
</td>
<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
</tr>
</table>


<!-- Section -->
<a name="sectlevel4id002002001004"></a>
<h4>4. Ausf&uuml;hren des erzeugten Programms </h4>

<p>
Sie haben nun eine Datei <font color="#660099">Hello.class</font>
erzeugt, die mit dem Java-Interpreter ausgef&uuml;hrt werden kann.
Das Programm wird aufgerufen und gibt die gew&uuml;nschte Meldung
auf dem Bildschirm aus: 
<p>
<a name="imageid002004"></a>
<img src="images/FirstSteps4.gif">
<p>

<p><i>
Abbildung 2.4: Ausf&uuml;hren von Hello</i></p>
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100%>
<tr>
<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=1></td>
<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top width=1000>

<p>
Wenn der Interpreter den Bytecode zur angegebenen Klassendatei nicht
finden kann, gibt er eine Fehlermeldung <a name="ixa100158"><a href="index_n.html#ixb100155"><font color=#000080><tt>NoClassDefFoundError</tt></font></a></a>
aus. Wenn die <font color="#660099">.class</font>-Datei tats&auml;chlich
vorhanden ist, liegt das fast immer daran, dass der Name der Klasse
falsch geschrieben wurde oder dass darin keine oder eine falsch deklarierte
<a href="index_m.html#ixb100150"><font color=#000080><tt>main</tt></font></a>-Methode
vorhanden ist. Beachten Sie, dass die Erweiterung <font color="#660099">.class</font>
beim Aufruf des Interpreters nicht an den Namen der auszuf&uuml;hrenden
Klasse angeh&auml;ngt werden darf.</td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top>
<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#CC0000">
<tr>
<td><font color="#FFFFFF">&nbsp;Warnung&nbsp;</font></td>
</tr>
</table>
</td>
<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
</tr>
</table>


<!-- Section -->
<a name="sectlevel4id002002001005"></a>
<h4>5. Beenden des Programms </h4>

<p>
Ein einfaches Java-Programm wird automatisch beendet, wenn seine <a href="index_m.html#ixb100150"><font color=#000080><tt>main</tt></font></a>-Methode
beendet wurde (in welchen F&auml;llen das nicht so ist, wird am Ende
von <a href="k100145.html#neuerthread">Abschnitt 22.2.1</a> beschrieben).
Unser Programm wird also nach der Ausgabe von &#187;Hello, world&#171;
beendet. Es gibt nat&uuml;rlich auch F&auml;lle, bei denen ein gestartetes
Programm nicht ordnungsgem&auml;&szlig; zum Ende kommt und auch auf
Benutzereingaben nicht mehr reagiert - meistens ist daf&uuml;r eine
Endlosschleife verantwortlich. Gl&uuml;cklicherweise l&auml;&szlig;t
sich die virtuelle Maschine, in der das Java-Programm l&auml;uft,
fast immer durch Dr&uuml;cken von <font color="#007700"><tt>[STRG]</tt></font>+<font color="#007700"><tt>[C]</tt></font>
abbrechen. Diese &#187;Notbremse&#171; sollte allerdings nur im Notfall
gezogen werden, denn sie beendet das Programm augenblicklich und hinterl&auml;sst
dessen Daten m&ouml;glicherweise in einem inkonsistenten Zustand.
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100%>
<tr>
<td width=1 align=left valign=top bgcolor="#0099CC"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=1></td>
<td width=1 align=left valign=top bgcolor="#0099CC"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top width=1000>

<p>
Falls Sie es trotz aller Bem&uuml;hungen bis zu diesem Punkt noch
nicht geschafft haben, das Beispiel zu &uuml;bersetzen und zu starten,
kann Ihnen m&ouml;glicherweise <a href="k100016.html#troubleshooting">Abschnitt 2.3.7</a>
weiterhelfen. Er beschreibt einige h&auml;ufig vorkommende Fehler,
gibt Tipps zu ihrer Diagnose und zeigt, wie man sie behebt.</td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top>
<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#0099CC">
<tr>
<td><font color="#FFFFFF">&nbsp;Tipp&nbsp;</font></td>
</tr>
</table>
</td>
<td width=1 align=left valign=top bgcolor="#0099CC"><img src="trp1_1.gif"></td>
</tr>
</table>


<!-- Section -->
<a name="beispielprogramme"></a>
<h3>2.2.2 Die Beispielprogramme </h3>


<!-- Section -->
<a name="sectlevel4id002002002001"></a>
<h4><a name="ixa100159">Starten der Beispielprogramme</a></h4>

<p>
Auf die im vorigen Abschnitt beschriebene Weise k&ouml;nnen nun beliebige
Java-Programme angelegt, &uuml;bersetzt und ausgef&uuml;hrt werden.
Die im Buch abgedruckten Beispielprogramme befinden sich auf der DVD
im Verzeichnis <font color="#660099">\examples</font>. Kopieren Sie
diese einschlie&szlig;lich der darin enthaltenen Unterverzeichnisse
in ein beliebiges Verzeichnis auf Ihrer Festplatte. Benutzen Sie einen
beliebigen Editor zur Eingabe oder Ver&auml;nderung von <font color="#660099">.java</font>-Dateien<a name="ixa100160"></a>,
&uuml;bersetzen Sie die Datei mit dem Kommando <a name="ixa100161"><a href="index_j.html#ixb100152"><font color=#000080><tt>javac</tt></font></a></a>,
und starten Sie das fertige Programm mit dem Kommando <a name="ixa100162"><a href="index_j.html#ixb100157"><font color=#000080><tt>java</tt></font></a></a>.
Falls Sie ein Applet geschrieben haben, erstellen Sie zus&auml;tzlich
eine passende HTML-Datei, und starten Sie das Programm mit dem Kommando
<a name="ixa100163"><a href="index_a.html#ixb100158"><font color=#000080><tt>appletviewer</tt></font></a></a>
anstatt mit <a href="index_j.html#ixb100157"><font color=#000080><tt>java</tt></font></a>.
Die Originalversionen der Beispielprogramme wurden bereits vorkompiliert
und k&ouml;nnen direkt mit dem Java-Interpreter ausgef&uuml;hrt werden.

<p>
Als Entwicklungssysteme f&uuml;r dieses Buch wurden die Versionen
1.1 bis 6.0 des JDK verwendet. Die meisten Beispiele wurden unter
Windows 95, 98 und XP entwickelt und getestet, einige wenige auch
unter NT, SUSE Linux oder Solaris. In die Beispiellistings aus dem
AWT sind einige Hinweise von Lesern mit SUN-Solaris-Plattformen eingeflossen.
Keines der Programme wurde vom Autor auf einem Macintosh getestet
(mangels Verf&uuml;gbarkeit). Bei Verwendung anderer Plattformen k&ouml;nnte
es zu leichten Abweichungen bei der Installation, der Funktionalit&auml;t
der Entwicklungswerkzeuge oder den Eigenschaften der Standardbibliothek
kommen. 
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100%>
<tr>
<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top width=1000>

<p>
Die <font color="#660099">.class</font>-Dateien im <font color="#660099">\examples</font>-Verzeichnis
der DVD wurden mit dem Java-6.0-Compiler erzeugt. Falls es Probleme
geben sollte, ein bestimmtes Beispielprogramm mit einem &auml;lteren
Java-Interpreter zu starten, hilft eventuell Neukompilieren dieses
Programms mit dem &auml;lteren Compiler. Nur eine Handvoll Beispielprogramme
verwenden Code, der mindestens das JDK 1.4, 5.0 oder sogar 6.0 erfordert,
die meisten k&ouml;nnen auch mit &auml;lteren JDKs kompiliert und
ausgef&uuml;hrt werden.</td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top>
<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#000077">
<tr>
<td><font color="#FFFFFF">&nbsp;Hinweis&nbsp;</font></td>
</tr>
</table>
</td>
<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
</tr>
</table>


<!-- Section -->
<a name="sectlevel4id002002002002"></a>
<h4>Zus&auml;tzlich erforderliche Dateien </h4>
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100%>
<tr>
<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=1></td>
<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top width=1000>

<p>
Der mit Abstand h&auml;ufigste Fehler beim Starten der Beispielprogramme
passiert dadurch, dass nicht alle ben&ouml;tigten <font color="#660099">.class</font>-Dateien
im aktuellen Verzeichnis liegen. Denn neben der kompilierten Klassendatei
ben&ouml;tigen die Beispielprogramme mitunter weitere <font color="#660099">.class</font>-Dateien.
Werden die Beispiele direkt aus dem <font color="#660099">examples</font>-Verzeichnis
der DVD (oder einer vollst&auml;ndigen Kopie davon) gestartet, treten
keine Probleme auf. Werden jedoch nur einzelne Klassendateien kopiert,
kann es beim Aufruf von <a href="index_j.html#ixb100157"><font color=#000080><tt>java</tt></font></a>
zu Fehlern des Typs <a name="ixa100164"><a href="index_n.html#ixb100155"><font color=#000080><tt>NoClassDefFoundError</tt></font></a></a>
kommen. Der h&auml;ufigste weist auf einen fehlenden <a name="ixa100165"><a href="index_w.html#ixb100159"><font color=#000080><tt>WindowClosingAdapter</tt></font></a></a>
hin, der von den meisten GUI-Beispielen ben&ouml;tigt wird. In diesem
Fall m&uuml;ssen lediglich die fehlenden Dateien <font color="#660099">WindowClosingAdapter.java</font>
und <font color="#660099">WindowClosingAdapter.class</font> aus dem
<font color="#660099">examples</font>-Verzeichnis in das aktuelle
Verzeichnis kopiert werden.</td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top>
<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#CC0000">
<tr>
<td><font color="#FFFFFF">&nbsp;Warnung&nbsp;</font></td>
</tr>
</table>
</td>
<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
</tr>
</table>

<p>
Mitunter werden neben den <font color="#660099">.class</font>-Dateien
noch weitere Dateien ben&ouml;tigt, damit das Beispiel korrekt l&auml;uft.
So erfordert etwa <a href="k100178.html#aendernfensterelemente">Listing 27.4</a>
zus&auml;tzlich die Datei <font color="#660099">testicon.gif</font>,
damit das Fenster-Icon korrekt angezeigt wird. Und um das Beispiel
zum Abspielen von Midi-Dateien in <a href="k100310.html#mididateien">Abschnitt 49.3.5</a>
wie angegeben ausf&uuml;hren zu k&ouml;nnen, wird die Datei <font color="#660099">ame.mid</font>
ben&ouml;tigt. Diese Dateien liegen in aller Regel ebenfalls im <font color="#660099">examples</font>-Verzeichnis
und sollten bei Bedarf auch in das Startverzeichnis des Beispielprogramms
kopiert werden. 

<p>
In einigen Kapiteln werden Themen behandelt, die zus&auml;tzliche
jar-Archive fordern, weil die entsprechende Funktionalit&auml;t nicht
im Standardumfang des JDK enthalten ist oder weil herstellerspezifische
Treiber erforderlich sind. Hierzu z&auml;hlen insbesondere <a href="k100088.html#dasjnlpapi">Abschnitt 13.5.3</a>,
<a href="k100171.html#javacommapi">Abschnitt 26.4.1</a> und <a href="k100265.html#kapiteljdbc">Kapitel 42</a>.
Wo die entsprechenden jar-Archive zu finden sind, wird in den jeweiligen
Abschnitten erl&auml;utert. Wie sie in den <a href="index_c.html#ixb100143"><font color=#000080><tt>CLASSPATH</tt></font></a>
eingebunden werden, damit Compiler und Interpreter sie finden, wird
in <a href="k100085.html#zuspaketeeinbinden">Abschnitt 13.2.3</a>
erkl&auml;rt. 
<hr>
<table border=0 cellpadding=0 cellspacing=1 width="100%">
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html">&nbsp;Titel&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html">&nbsp;Inhalt&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html">&nbsp;Suchen&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html">&nbsp;Index&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()">&nbsp;DOC&nbsp;</a>
<td align="right">Handbuch der Java-Programmierung, 5. Auflage, Addison
Wesley, Version 5.0.1
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100013.html">&nbsp;&lt;&lt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100014.html">&nbsp;&nbsp;&lt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100016.html">&nbsp;&nbsp;&gt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100018.html">&nbsp;&gt;&gt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()">&nbsp;API&nbsp;</a>
<td align="right">&copy; 1998, 2007 Guido Kr&uuml;ger &amp; Thomas
Stark, <a href="http://www.javabuch.de">http://www.javabuch.de</a>
</table>
<a name="endofbody"></a>
</body>
</html>