Microsoft Windows系统上常见的错误消息。html
'javac' is not recognized as an internal or external command, operable program or batch file
若是你收到这个错误,Windows将没法找到编译器(javac)。java
这里有一种方法能够告诉Windows哪里能够找到javac,假设你在C:jdk1.8.0中安装了JDK,在提示符处输入如下命令并按Enter键:程序员
C:\jdk1.8.0\bin\javac HelloWorldApp.java
若是你选择此选项,你必须在你的javac
和java
命令以前使用C:\jdk1.8.0\bin
,每次编译或运行一个程序时,为了不这种额外的输入,请参考JDK 8安装说明中更新PATH变量的部分。web
Class names, 'HelloWorldApp', are only accepted if annotation processing is explicitly requested
若是收到此错误,则在编译程序时忘记包含.java后缀,记住,这个命令是javac HelloWorldApp.java,不是javac HelloWorldApp。shell
javac: Command not found
若是你收到这个错误,UNIX将没法找到编译器javac
。express
有一种方法能够告诉UNIX在哪里找到javac
,假设你在/usr/local/jdk1.8.0
中安装了JDK,在提示符下输入如下命令并按回车:编程
/usr/local/jdk1.8.0/javac HelloWorldApp.java
若是你选择此选项,那么每次编译或运行一个程序时,你都必须在你的javac和java命令以前加上
/usr/local/jdk1.8.0/
,为了不这种额外的输入,你能够将这些信息添加到PATH变量中,这样作的步骤将根据当前运行的shell而有所不一样。
Class names, 'HelloWorldApp', are only accepted if annotation processing is explicitly requested
若是收到此错误,则在编译程序时忘记包含.java后缀,记住,这个命令是javac HelloWorldApp.java
,不是javac HelloWorldApp
。segmentfault
若是你错误地编写程序的一部分,编译器可能会发出语法错误,消息一般显示错误的类型、检测错误的行号、行上的代码以及代码中错误的位置,在语句末尾省略分号(;)会致使如下错误:windows
testing.java:14: `;' expected. System.out.println("Input has " + count + " chars.") ^ 1 error
有时,编译器没法猜想你的意图,若是错误级联超过几行,则会打印出混乱的错误消息或多个错误消息,例如,下面的代码片断省略了粗体行中的分号(;
):浏览器
while (System.in.read() != -1) count++ System.out.println("Input has " + count + " chars.");
在处理此代码时,编译器发出两个错误消息:
testing.java:13: Invalid type expression. count++ ^ testing.java:14: Invalid declaration. System.out.println("Input has " + count + " chars."); ^ 2 errors
编译器发出两个错误消息,由于在它处理count++
以后,编译器的状态代表它位于表达式的中间,若是没有分号,编译器就没法知道语句是否完整。
若是你看到任何编译错误,那么你的程序没有成功编译,编译器也没有建立.class
文件,仔细检查程序,修复你检测到的任何错误,而后再次尝试。
除了验证你的程序语法正确以外,编译器还检查其余基本正确性,例如,每次使用未初始化的变量时,编译器都会警告你:
testing.java:13: Variable count may not have been initialized. count++ ^ testing.java:14: Variable count may not have been initialized. System.out.println("Input has " + count + " chars."); ^ 2 errors
一样,你的程序没有成功编译,编译器也没有建立.class
文件,修复错误并再次尝试。
Microsoft Windows系统上的错误消息。
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorldApp
若是你收到此错误,java将没法找到你的字节码文件HelloWorldApp.class
。
java试图找到.class
文件的地方之一是当前目录,所以,若是你的.class
文件在C:\java
中,你应该将当前目录更改成C:\java
,若要更改目录,请在提示符处输入如下命令,而后按回车键:
cd c:\java
他的提示应该更改成C:\java>
,若是在提示符处输入dir
,应该会看到.java
和.class
文件,如今再次输入java HelloWorldApp
。
若是仍然有问题,你可能须要更改CLASSPATH
变量,要查看是否须要这样作,请尝试使用如下命令对类路径进行截断。
set CLASSPATH=
如今再次输入java HelloWorldApp,若是该程序如今能够工做,那么你必须更改CLASSPATH
变量,要设置此变量,请参阅JDK 8安装说明中更新路径变量一节,CLASSPATH
变量的设置方式相同。
Could not find or load main class HelloWorldApp.class
初学者程序员常犯的一个错误是尝试在编译器建立的.class
文件上运行java启动程序,例如,若是你试图使用HelloWorldApp.class
而不是java HelloWorldApp
运行程序,你将会获得这个错误。记住,参数是要使用的类的名称,而不是文件名。
Exception in thread "main" java.lang.NoSuchMethodError: main
Java VM要求使用它的类有一个main
方法来开始执行应用程序,详解“Hello World!”应用中详细讨论了main方法。
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorldApp
若是你收到此错误,java将没法找到你的字节码文件HelloWorldApp.class
。
java试图找到你的字节码文件的地方之一是当前目录,例如,若是你的字节码文件位于/home/jdoe/java
中,你应该将当前目录更改成该目录,若要更改目录,请在提示符处输入如下命令并按回车:
cd /home/jdoe/java
若是在提示符处输入pwd
,应该会看到/home/jdoe/java
,若是在提示符处输入ls
,应该会看到.java
和.class
文件,如今再次输入java HelloWorldApp
。
若是你仍然有问题,你可能须要更改CLASSPATH
环境变量,要查看是否须要这样作,请尝试使用如下命令对类路径进行截断。
unset CLASSPATH
如今再次输入java HelloWorldApp
,若是该程序如今能够工做,那么你将必须以与上面的PATH
变量相同的方式更改CLASSPATH
变量。
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorldApp/class
初学者程序员常犯的一个错误是尝试在编译器建立的.class
文件上运行java启动程序,例如,若是你试图使用HelloWorldApp.class
而不是java HelloWorldApp
运行程序,你将会获得这个错误。记住,参数是要使用的类的名称,而不是文件名。
Exception in thread "main" java.lang.NoSuchMethodError: main
Java VM要求使用它的类有一个主要的方法来开始执行应用程序,详解“Hello World!”应用中详细讨论了main方法。
若是你正在经过浏览器运行一个应用程序,并获得安全警告说该应用程序被阻塞,请检查如下条目:
manifest.mf
,从NetBeans IDE的Files选项卡中打开清单文件。