目录
编译时错误
‘javac’ is not recognized as an internal or external command, operable program or batch file
如果你收到这样的错误信息,说明windows不能找到Java编译器Javac。
这有一个办法去告诉windws系统,去哪里能够找到Javac。猜测您已经安装了JDK在“C:\jdk1.8.0”目录下,你需要在cmd命令中输入如下信息:
C:\jdk1.8.0\bin\javac HelloWorldApp.java
如果你这样做的话,每次你编译或者运行程序的时候,都必须在“C:\jdk1.8.0\bin”目录下进行。避免额外的输入这些信息,你可以参考JDK8安装说明来更新环境变量。
Class names,’HelloWorldApp’ ,are only accepted if annotation processing is explicityly requested
如果你收到这样的错误信息,在编译程序的时候,你忘记输入‘.java’ 后缀了。记住,正确的命令是javac HelloWorldApp.java ,而不是 javac HelloWorldApp。
Syntax Error(语法错误)
如果您打错了程序的一部分,编译器可能会发出语法错误。该消息通常显示错误的类型,检测到错误的行号,该行上的代码以及代码中错误的位置。以下是在语句末尾省略分号(;)导致的错误:
testing.java:14: `;' expected.
System.out.println("Input has " + count + " chars.")
^
1 error
有时,如果错误级联在几行,编译器无法猜测您的意图,并打印出混乱的错误消息或多个错误消息。例如,以下代码片段从粗体中省略了一个分号(;):
testing.java:13: Invalid type expression.
count++
^
testing.java:14: Invalid declaration.
System.out.println("Input has " + count + " chars.");
^
2 errors
编译器发出两个错误消息,因为在处理count ++之后,编译器的状态表示它在一个表达式的中间。没有分号,编译器无法知道该语句是结束。
如果看到任何编译器错误,那么你的程序没有成功编译,编译器没有创建一个.class文件。仔细验证程序,修复您检测到的任何错误,然后重试。
Semantic Errors(语义错误)
除了验证您的程序在语法上是正确的,编译器检查其他基本正确性。例如,编译器在每次使用尚未初始化的变量时都会发出警告:
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文件。修复错误,然后重试。
运行时错误
Exception in thread “main” java.lang.NoClassDefFoundError: HelloWorldApp
如果您收到此错误信息,java找不到您的字节码文件HelloWorldApp.class
java尝试在你当前的目录寻找.class文件。所以如果您的.class文件位于C:\ java中,则应将当前目录更改为该目录,要更改目录,请在提示符下键入以下命令,然后按Enter键:
cd c:\java
提示符应更改为C:\ java>。如果在提示符下输入目录,则应该看到.java和.class文件。现在再次输入java HelloWorldApp。
如果仍然有问题,您可能需要更改CLASSPATH变量。要查看是否有必要,请尝试使用以下命令清除类路径。
set CLASSPATH=
现在再次输入java HelloWorldApp。如果程序现在工作,您将必须更改CLASSPATH变量。要设置此变量,请参阅JDK 8安装说明中的更新PATH变量部分。 CLASSPATH变量的设置方式相同。
Could not find or load main class HelloWorldApp.class
初学者程序员常犯的错误是尝试在编译器创建的.class文件上运行java启动器。例如,如果您尝试使用Java HelloWorldApp.class而不是java HelloWorldApp运行程序,则会收到此错误。记住,参数是要使用的类的名称,而不是文件名。
Exception in thread “main” java.lang.NoSuchMethodError: main
JVM要求您使用它执行的类具有开始执行应用程序的Main方法,上一章,我们详细讨论了main方法。
Applet or Java Web Start Application Is Blocked
如果您通过浏览器运行应用程序,并获得说应用程序被阻止的安全警告,请检查以下项目:
- 验证JAR文件清单中的属性是否正确设置为运行应用程序的环境。权限属性是必需的。在NetBeans项目中,您可以通过从NetBeans IDE的“文件”选项卡展开项目文件夹并双击manifest.mf来打开清单文件。
- 验证应用程序是否由有效的证书签名,并且证书位于Signer CA密钥库中。验证应用程序是否由有效的证书签名,并且证书位于Signer CA密钥库中。
- 如果您正在运行本地小程序,请设置一个用于测试的Web服务器。您也可以将应用程序添加到异常站点列表中,该列表在Java控制面板的“安全”选项卡中进行管理。