【问题标题】:Why I can't compile this simple Java Code on CMD, but compile it on an online compiler?为什么我不能在 CMD 上编译这个简单的 Java 代码,而是在在线编译器上编译它?
【发布时间】:2015-10-01 17:10:22
【问题描述】:

我从一本书(名为 Schaum 的计算机科学原理大纲)中获得了这段 Java 代码:

public class Main{
    public static void main(String[]args){
        int x;
        int y;
        int z;

        y=7;
        z=4;
        x=y+z;
        System.out.println("x = "+x);
    }
}

我已将“原始”更改为“主要”。并且可以在这个网站上编译:

http://www.learnjavaonline.org/

输出只是“x = 11”。

但是当尝试在 Windows 8.1 上使用 javac Main.java 使用 CMD 编译它时,我收到了这个错误消息(文件名为 Main.java):

Main.java:1: error: illegal character: '\u0000'
 ■p u b l i c   c l a s s   M a i n {
               ^
Main.java:1: error: illegal character: '\u0000'
 ■p u b l i c   c l a s s   M a i n {
                           ^
Main.java:1: error: <identifier> expected
 ■p u b l i c   c l a s s   M a i n {
                                    ^
Main.java:1: error: illegal character: '\u0000'
 ■p u b l i c   c l a s s   M a i n {
                                     ^
Main.java:2: error: illegal character: '\u0000'

^
Main.java:3: error: illegal character: '\u0000'
 p u b l i c   s t a t i c   v o i d   m a i n ( S t r i n g [ ] a r g s ) {
^
Main.java:3: error: illegal character: '\u0000'
 p u b l i c   s t a t i c   v o i d   m a i n ( S t r i n g [ ] a r g s ) {
              ^
Main.java:3: error: illegal character: '\u0000'
 p u b l i c   s t a t i c   v o i d   m a i n ( S t r i n g [ ] a r g s ) {
                            ^
Main.java:3: error: illegal character: '\u0000'
 p u b l i c   s t a t i c   v o i d   m a i n ( S t r i n g [ ] a r g s ) {
                                      ^
Main.java:3: error: illegal start of type
 p u b l i c   s t a t i c   v o i d   m a i n ( S t r i n g [ ] a r g s ) {
                                               ^
Main.java:3: error: illegal character: '\u0000'
 p u b l i c   s t a t i c   v o i d   m a i n ( S t r i n g [ ] a r g s ) {
                                                ^
Main.java:3: error: illegal character: '\u0000'
 p u b l i c   s t a t i c   v o i d   m a i n ( S t r i n g [ ] a r g s ) {
                                                              ^
Main.java:3: error: ';' expected
 p u b l i c   s t a t i c   v o i d   m a i n ( S t r i n g [ ] a r g s ) {
                                                               ^
Main.java:3: error: illegal character: '\u0000'
 p u b l i c   s t a t i c   v o i d   m a i n ( S t r i n g [ ] a r g s ) {
                                                                ^
Main.java:3: error: illegal start of type
 p u b l i c   s t a t i c   v o i d   m a i n ( S t r i n g [ ] a r g s ) {
                                                                         ^
Main.java:3: error: illegal character: '\u0000'
 p u b l i c   s t a t i c   v o i d   m a i n ( S t r i n g [ ] a r g s ) {
                                                                          ^
Main.java:3: error: illegal character: '\u0000'
 p u b l i c   s t a t i c   v o i d   m a i n ( S t r i n g [ ] a r g s ) {
                                                                            ^
Main.java:4: error: illegal character: '\u0000'

^
Main.java:5: error: illegal character: '\u0000'
 i n t   x ;
^
Main.java:5: error: illegal character: '\u0000'
 i n t   x ;
        ^
Main.java:5: error: not a statement
 i n t   x ;
 ^
Main.java:5: error: not a statement
 i n t   x ;
         ^
Main.java:5: error: illegal character: '\u0000'
 i n t   x ;
            ^
Main.java:6: error: illegal character: '\u0000'

^
Main.java:7: error: illegal character: '\u0000'
 i n t   y ;
^
Main.java:7: error: illegal character: '\u0000'
 i n t   y ;
        ^
Main.java:7: error: not a statement
 i n t   y ;
 ^
Main.java:7: error: not a statement
 i n t   y ;
         ^
Main.java:7: error: illegal character: '\u0000'
 i n t   y ;
            ^
Main.java:8: error: illegal character: '\u0000'

^
Main.java:9: error: illegal character: '\u0000'
 i n t   z ;
^
Main.java:9: error: illegal character: '\u0000'
 i n t   z ;
        ^
Main.java:9: error: not a statement
 i n t   z ;
 ^
Main.java:9: error: not a statement
 i n t   z ;
         ^
Main.java:9: error: illegal character: '\u0000'
 i n t   z ;
            ^
Main.java:10: error: illegal character: '\u0000'

^
Main.java:11: error: illegal character: '\u0000'

^
Main.java:12: error: illegal character: '\u0000'

^
Main.java:13: error: illegal character: '\u0000'
 y = 7 ;
^
Main.java:13: error: illegal character: '\u0000'
 y = 7 ;
    ^
Main.java:13: error: illegal character: '\u0000'
 y = 7 ;
      ^
Main.java:13: error: not a statement
 y = 7 ;
     ^
Main.java:13: error: illegal character: '\u0000'
 y = 7 ;
        ^
Main.java:14: error: illegal character: '\u0000'

^
Main.java:15: error: illegal character: '\u0000'
 z = 4 ;
^
Main.java:15: error: illegal character: '\u0000'
 z = 4 ;
    ^
Main.java:15: error: illegal character: '\u0000'
 z = 4 ;
      ^
Main.java:15: error: not a statement
 z = 4 ;
     ^
Main.java:15: error: illegal character: '\u0000'
 z = 4 ;
        ^
Main.java:16: error: illegal character: '\u0000'

^
Main.java:17: error: illegal character: '\u0000'
 x = y + z ;
^
Main.java:17: error: illegal character: '\u0000'
 x = y + z ;
    ^
Main.java:17: error: illegal character: '\u0000'
 x = y + z ;
        ^
Main.java:17: error: not a statement
 x = y + z ;
       ^
Main.java:17: error: not a statement
 x = y + z ;
         ^
Main.java:17: error: illegal character: '\u0000'
 x = y + z ;
            ^
Main.java:18: error: illegal character: '\u0000'

^
Main.java:19: error: illegal character: '\u0000'
 S y s t e m . o u t . p r i n t l n ( " x   =   " + x ) ;
^
Main.java:19: error: illegal character: '\u0000'
 S y s t e m . o u t . p r i n t l n ( " x   =   " + x ) ;
              ^
Main.java:19: error: not a statement
 S y s t e m . o u t . p r i n t l n ( " x   =   " + x ) ;
             ^
Main.java:19: error: illegal character: '\u0000'
 S y s t e m . o u t . p r i n t l n ( " x   =   " + x ) ;
                      ^
Main.java:19: error: not a statement
 S y s t e m . o u t . p r i n t l n ( " x   =   " + x ) ;
                     ^
Main.java:19: error: illegal character: '\u0000'
 S y s t e m . o u t . p r i n t l n ( " x   =   " + x ) ;
                                      ^
Main.java:19: error: ';' expected
 S y s t e m . o u t . p r i n t l n ( " x   =   " + x ) ;
                                       ^
Main.java:19: error: illegal character: '\u0000'
 S y s t e m . o u t . p r i n t l n ( " x   =   " + x ) ;
                                                  ^
Main.java:19: error: illegal character: '\u0000'
 S y s t e m . o u t . p r i n t l n ( " x   =   " + x ) ;
                                                    ^
Main.java:19: error: not a statement
 S y s t e m . o u t . p r i n t l n ( " x   =   " + x ) ;
                                                   ^
Main.java:19: error: not a statement
 S y s t e m . o u t . p r i n t l n ( " x   =   " + x ) ;
                                                     ^
Main.java:19: error: ';' expected
 S y s t e m . o u t . p r i n t l n ( " x   =   " + x ) ;
                                                       ^
Main.java:19: error: illegal character: '\u0000'
 S y s t e m . o u t . p r i n t l n ( " x   =   " + x ) ;
                                                        ^
Main.java:19: error: illegal character: '\u0000'
 S y s t e m . o u t . p r i n t l n ( " x   =   " + x ) ;
                                                          ^
Main.java:20: error: illegal character: '\u0000'

^
Main.java:21: error: illegal character: '\u0000'
 }
^
Main.java:21: error: illegal character: '\u0000'
 }
  ^
Main.java:22: error: illegal character: '\u0000'

^
Main.java:23: error: illegal character: '\u0000'
 }
^
Main.java:23: error: illegal character: '\u0000'
 }
  ^
Main.java:23: error: reached end of file while parsing
 }
   ^
78 errors

即使我删除了所有空格,也会出现 35 个错误。

我安装的 Java 版本是: Java 8 Update 60(64 位)(我有 Windows 64 位) Java SE 开发工具包 8 更新 60(64 位) 两个版本都是 8.0.600.27

为什么我无法在 CMD 上编译?是因为我使用的是 Notepad 6.3(Windows 8.1 和其他版本中包含的标准 Notepad)?

【问题讨论】:

  • 您的记事本似乎将此空 (0) 字符添加到您的文件中。我建议您使用 Notepad++ 或 Sublime 等其他文本编辑器从这些字符中清除文件。
  • 这看起来很可疑,就像您从某个地方复制/粘贴了这段代码,并且编码混乱了。
  • 你是直接从网站上复制粘贴的吗?如果是这样,请尝试在记事本中输入。如果您想在您的计算机上编写 Java,我建议您安装一个 IDE,例如 NetBeans。
  • 下载一个现代的 IDE,比如 Eclipse 或 NetBeans...它会让你的生活轻松 1000 倍。

标签: java cmd compilation


【解决方案1】:

您的文件以 UTF-16 保存,但您没有告诉编译器 (-encoding)。

建议您在记事本中打开该文件,然后在系统默认代码页中再次保存。

【讨论】:

  • 有 ANSI、Unicode、Unicode Big Endian 和 UTF-8。我应该使用 ANSI 保存它吗?
  • 这样最好,是的。
猜你喜欢
  • 1970-01-01
  • 2012-11-18
  • 1970-01-01
  • 2018-12-02
  • 1970-01-01
  • 1970-01-01
  • 2012-02-14
  • 2011-11-27
  • 2021-11-11
相关资源
最近更新 更多