【JavaSE系列-入门篇5】——常见问题以及解决方案

目录

编译时错误

‘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

如果您通过浏览器运行应用程序,并获得说应用程序被阻止的安全警告,请检查以下项目:

  1. 验证JAR文件清单中的属性是否正确设置为运行应用程序的环境。权限属性是必需的。在NetBeans项目中,您可以通过从NetBeans IDE的“文件”选项卡展开项目文件夹并双击manifest.mf来打开清单文件。
  2. 验证应用程序是否由有效的证书签名,并且证书位于Signer CA密钥库中。验证应用程序是否由有效的证书签名,并且证书位于Signer CA密钥库中。
  3. 如果您正在运行本地小程序,请设置一个用于测试的Web服务器。您也可以将应用程序添加到异常站点列表中,该列表在Java控制面板的“安全”选项卡中进行管理。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值