# Problem beim Kompilieren ohne IDE



## Fabulus (10. Dez 2010)

Hallo 

Wenn ich meine Klassen mit javac *.java kompilieren möchte, kommt bei einer speziellen Klasse folgender Kompilierungsfehler:

```
Menu.java:0: warning: unmappable character for encoding ASCII  
??package wm;                                                  
^                                                              
Menu.java:1: warning: unmappable character for encoding ASCII  
??package wm;                                                  
 ^                                                             
Menu.java:1: illegal character: \65533                         
??package wm;                                                  
^                                                              
Menu.java:1: illegal character: \65533                         
??package wm;                                                  
 ^                                                             
Menu.java:1: illegal character: \0                             
??package wm;                                                  
  ^                                                            
Menu.java:1: illegal character: \0                             
??package wm;                                                  
                  ^                                            
Menu.java:1: illegal character: \0                             
??package wm;                                                  
                        ^                                      
Menu.java:2: illegal character: \0                             

^
Menu.java:3: illegal character: \0
import javax.swing.*;             
^                                 
Menu.java:3: illegal character: \0
import javax.swing.*;             
              ^                   
Menu.java:3: illegal character: \0
import javax.swing.*;             
                          ^       
Menu.java:3: illegal character: \0
import javax.swing.*;             
                                      ^
Menu.java:3: illegal character: \0     
import javax.swing.*;                  
                                        ^
Menu.java:3: illegal character: \0       
import javax.swing.*;                    
                                          ^
Menu.java:4: illegal character: \0         

^
Menu.java:5: illegal character: \0
import java.awt.event.ActionEvent;
^                                 
Menu.java:5: illegal character: \0
import java.awt.event.ActionEvent;
              ^                   
Menu.java:5: illegal character: \0
import java.awt.event.ActionEvent;
                        ^         
Menu.java:5: illegal character: \0
import java.awt.event.ActionEvent;
                                ^ 
Menu.java:5: illegal character: \0
import java.awt.event.ActionEvent;
                                            ^
Menu.java:5: illegal character: \0           
import java.awt.event.ActionEvent;           
                                                                    ^
Menu.java:6: illegal character: \0                                   
import java.awt.event.ActionListener;                                
^                                                                    
Menu.java:6: illegal character: \0                                   
import java.awt.event.ActionListener;                                
              ^                                                      
Menu.java:6: illegal character: \0                                   
import java.awt.event.ActionListener;                                
                        ^                                            
Menu.java:6: illegal character: \0                                   
import java.awt.event.ActionListener;                                
                                ^                                    
Menu.java:6: illegal character: \0                                   
import java.awt.event.ActionListener;                                
                                            ^                        
Menu.java:6: illegal character: \0                                   
import java.awt.event.ActionListener;                                
                                                                          ^
Menu.java:7: illegal character: \0                                         
import java.awt.event.InputEvent;                                          
^                                                                          
Menu.java:7: illegal character: \0                                         
import java.awt.event.InputEvent;                                          
              ^                                                            
Menu.java:7: illegal character: \0                                         
import java.awt.event.InputEvent;                                          
                        ^                                                  
Menu.java:7: illegal character: \0                                         
import java.awt.event.InputEvent;                                          
                                ^                                          
Menu.java:7: illegal character: \0                                         
import java.awt.event.InputEvent;                                          
                                            ^                              
Menu.java:7: illegal character: \0                                         
import java.awt.event.InputEvent;                                          
                                                                  ^        
Menu.java:8: illegal character: \0                                         
import java.awt.event.KeyEvent;                                            
^                                                                          
Menu.java:8: illegal character: \0                                         
import java.awt.event.KeyEvent;                                            
              ^                                                            
Menu.java:8: illegal character: \0                                         
import java.awt.event.KeyEvent;                                            
                        ^                                                  
Menu.java:8: illegal character: \0                                         
import java.awt.event.KeyEvent;                                            
                                ^                                          
Menu.java:8: illegal character: \0                                         
import java.awt.event.KeyEvent;                                            
                                            ^                              
Menu.java:8: illegal character: \0                                         
import java.awt.event.KeyEvent;                                            
                                                              ^            
Menu.java:9: illegal character: \0                                         
import java.util.*;                                                        
^                                                                          
Menu.java:9: illegal character: \0                                         
import java.util.*;                                                        
              ^                                                            
Menu.java:9: illegal character: \0                                         
import java.util.*;                                                        
                        ^                                                  
Menu.java:9: illegal character: \0                                         
import java.util.*;                                                        
                                  ^                                        
Menu.java:9: illegal character: \0                                         
import java.util.*;                                                        
                                    ^                                      
Menu.java:9: illegal character: \0                                         
import java.util.*;                                                        
                                      ^                                    
Menu.java:10: illegal character: \0                                        

^
Menu.java:11: illegal character: \0
/**                                
^                                  
Menu.java:11: illegal character: \0
/**                                
  ^                                
Menu.java:11: illegal character: \0
/**                                
    ^                              
Menu.java:11: illegal character: \0
/**                                
      ^                            
Menu.java:12: illegal character: \0
 *                                 
^                                  
Menu.java:12: illegal character: \0
 *                                 
  ^                                
Menu.java:12: illegal character: \0
 *                                 
    ^                              
Menu.java:12: illegal character: \0
 *                                 
      ^                            
Menu.java:13: illegal character: \0
 * lumbeck                         
^                                  
Menu.java:13: illegal character: \0
 * lumbeck                         
  ^                                
Menu.java:13: illegal character: \0
 * lumbeck                         
    ^                              
Menu.java:13: illegal character: \0
 * lumbeck                         
      ^                            
Menu.java:14: illegal character: \0
 *                                 
^                                  
Menu.java:14: illegal character: \0
 *                                 
  ^                                
Menu.java:14: illegal character: \0
 *                                 
    ^                              
Menu.java:15: illegal character: \0
 * Diese Klasse erstellt ein Menue-Objekt fuer den oberen Applikationsrand
^                                                                         
Menu.java:15: illegal character: \0                                       
 * Diese Klasse erstellt ein Menue-Objekt fuer den oberen Applikationsrand
  ^                                                                       
Menu.java:15: illegal character: \0                                       
 * Diese Klasse erstellt ein Menue-Objekt fuer den oberen Applikationsrand
    ^                                                                     
Menu.java:15: illegal character: \0                                       
 * Diese Klasse erstellt ein Menue-Objekt fuer den oberen Applikationsrand
      ^                                                                   
Menu.java:15: illegal character: \0                                       
 * Diese Klasse erstellt ein Menue-Objekt fuer den oberen Applikationsrand
                  ^                                                       
Menu.java:15: illegal character: \0                                       
 * Diese Klasse erstellt ein Menue-Objekt fuer den oberen Applikationsrand
                                ^                                         
Menu.java:15: illegal character: \0                                       
 * Diese Klasse erstellt ein Menue-Objekt fuer den oberen Applikationsrand
                                                  ^                       
Menu.java:15: illegal character: \0                                       
 * Diese Klasse erstellt ein Menue-Objekt fuer den oberen Applikationsrand
                                                          ^               
Menu.java:15: illegal character: \0                                       
 * Diese Klasse erstellt ein Menue-Objekt fuer den oberen Applikationsrand
                                                                      ^   
Menu.java:15: illegal character: \0                                       
 * Diese Klasse erstellt ein Menue-Objekt fuer den oberen Applikationsrand
                                                                                    ^
Menu.java:15: illegal character: \0                                                  
 * Diese Klasse erstellt ein Menue-Objekt fuer den oberen Applikationsrand           
                                                                                              ^
Menu.java:15: illegal character: \0                                                            
 * Diese Klasse erstellt ein Menue-Objekt fuer den oberen Applikationsrand                     
                                                                                                      ^
Menu.java:15: illegal character: \0                                                                    
 * Diese Klasse erstellt ein Menue-Objekt fuer den oberen Applikationsrand                             
                                                                                                                    ^
Menu.java:16: illegal character: \0                                                                                  
 */                                                                                                                  
^                                                                                                                    
Menu.java:16: illegal character: \0                                                                                  
 */                                                                                                                  
  ^                                                                                                                  
Menu.java:16: illegal character: \0                                                                                  
 */                                                                                                                  
    ^                                                                                                                
Menu.java:16: illegal character: \0                                                                                  
 */                                                                                                                  
      ^                                                                                                              
Menu.java:17: illegal character: \0                                                                                  
public class Menu implements ActionListener{                                                                         
^                                                                                                                    
Menu.java:17: illegal character: \0                                                                                  
public class Menu implements ActionListener{                                                                         
              ^                                                                                                      
Menu.java:17: illegal character: \0                                                                                  
public class Menu implements ActionListener{                                                                         
                          ^                                                                                          
Menu.java:17: illegal character: \0                                                                                  
public class Menu implements ActionListener{                                                                         
                                    ^                                                                                
Menu.java:17: illegal character: \0                                                                                  
public class Menu implements ActionListener{                                                                         
                                                          ^                                                          
Menu.java:17: illegal character: \0                                                                                  
public class Menu implements ActionListener{                                                                         
                                                                                        ^                            
Menu.java:18: illegal character: \0                                                                                  

^
Menu.java:19: illegal character: \0
        protected JMenuBar menuBar;
^                                  
Menu.java:19: illegal character: \0
        protected JMenuBar menuBar;
        ^                          
Menu.java:19: illegal character: \0
        protected JMenuBar menuBar;
                            ^      
Menu.java:19: illegal character: \0
        protected JMenuBar menuBar;
                                              ^
Menu.java:19: illegal character: \0            
        protected JMenuBar menuBar;            
                                                              ^
Menu.java:20: illegal character: \0                            
        protected JMenu[] menu;                                
^                                                              
Menu.java:20: illegal character: \0                            
        protected JMenu[] menu;                                
        ^                                                      
Menu.java:20: illegal character: \0                            
        protected JMenu[] menu;                                
                            ^                                  
Menu.java:20: illegal character: \0                            
        protected JMenu[] menu;                                
                                        ^                      
Menu.java:20: illegal character: \0                            
        protected JMenu[] menu;                                
                                          ^                    
Menu.java:20: illegal character: \0
        protected JMenu[] menu;
                                            ^
Menu.java:20: illegal character: \0
        protected JMenu[] menu;
                                                      ^
Menu.java:21: illegal character: \0
        protected JMenu[] submenu;
^
Menu.java:21: illegal character: \0
        protected JMenu[] submenu;
        ^
Menu.java:21: illegal character: \0
        protected JMenu[] submenu;
                            ^
Menu.java:21: illegal character: \0
        protected JMenu[] submenu;
                                        ^
Menu.java:21: illegal character: \0
        protected JMenu[] submenu;
                                          ^
100 errors
2 warnings
```

Meine ersten Zeilen der Datei Menu.java sehen folgendermaßen aus:

```
package wm;

import javax.swing.*;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.util.*;

/**
 * 
 * lumbeck
 *
 * Diese Klasse erstellt ein Menue-Objekt fuer den oberen Applikationsrand
 */
public class Menu implements ActionListener{

    protected JMenuBar menuBar;
    protected JMenu[] menu;
    protected JMenu[] submenu;
    protected JMenuItem[] item;
    protected JRadioButtonMenuItem[] radioDesigns;
    protected JRadioButtonMenuItem[] radioSprachen;
    protected ButtonGroup group[];
```


Warum wird das \0 Zeichen nicht vom Compiler erkannt? Waere es sinnvoll, ein bestimmtes Encoding im build-File bzw beim javac anzugeben?
Wie sieht der korrekte Befehl im build-file aus? Ich würde es natürlich erst einmal manuell kompiliert kriegen, dann schaue ich weiter!
Danke


----------



## hansmueller (10. Dez 2010)

Hallo,

ist jetzt mal nur so ins blaue geraten, aber...
probiere es mal bei javac mit dem Zusatz "-encoding UTF-8".
Das UTF-8 mußt du natürlich durch den von dir verwendeten Zeichensatz ersetzen, in dem du die java-Dateien abgespeichert hast.

MfG
hansmueller


----------



## Fabulus (10. Dez 2010)

Soweit ich es in Eclipse richtig sehen kann, ist das Encoding auf ISO-8859-1 eingestellt. Funktioniert aber weder mit -encoding ISO-8859-1 noch mit -encoding UTF-8.

Wie kann ich sicher sein, welchen Zeichensatz ich verwende? Wie war gleich der Befehl innerhalb Java gleich?


----------



## ARadauer (10. Dez 2010)

sehr seltsam.. ist da wirklich das p an erster stelle? oder ist davor noch irgendwas obskures?


----------



## Fabulus (10. Dez 2010)

Okay, ich habe es herausgefunden. Die Menu.java war (warum auch immer?!) binary. Mit dem emacs wurde sie richtig geoeffnet, bei Kate gabs beim Oeffnen Probleme(dort war auch das Zeichen zu sehen, was gestoert hat und bei Eclipse und Emacs nicht sichtbar war), worauf ich die Datei neu erstellt habe im Kate. Wird jetzt richtig kompiliert 

Habe noch ein weiteres Problem, werde es spaeter hier berichten, hat etwas mit build.xml-Dateien zu tun, deshalb bitte nicht schliessen oder aehnliches


----------



## musiKk (10. Dez 2010)

ARadauer hat gesagt.:


> sehr seltsam.. ist da wirklich das p an erster stelle? oder ist davor noch irgendwas obskures?



Kann hier eigentlich nur das BOM sein.


----------

