JAVA开发入门级错误及对策

 
Q:javac 不是有效的内部命令
A:有两个原因:1 没有安装jdk,安装了jre,这时候是可以运行java命令,但是javac不能运行。2 安装了jdk但路径设置不对,也就是path这个环境变量设置不对,请参考如上设置方法,一定要在path的最前边加上jdk的bin目录的路径。例如,如果设置了JAVA_HOME,那么在path前加【%JAVA_HOME%/bin;】

Q: JDK怎么使用?
A: 按照提示把JDK安装成功,设置好环境变量,打开记事本,输入:

1
2
3
4
5
 public class HelloWorld {
        public static void main(String[] args) {
            System.out.println("Hello ,world!");
        }
    }//注意大小写 !!!


保存为HelloWorld.java ,注意保存时要选择"所有类型", 打开命令提示符(Dos),进入你保存文件的目录,
javac HelloWorld.java (编译) 如果没错误,再
java HelloWorld (运行)
java.sun.com官方关于第一个Java程序编写的教程.
Your First Cup of Java (for Microsoft Windows)

还可以写一个批处理脚本run.bat,run.bat中包含路径信息。



Q: 运行javac HelloWorld.java 为何error:cannot read:HelloWorld.java 1 error
A: 首先检查文件名的的拼写,大小写是否正确,再看目录是否正确。可以在运行该命令的窗口中dir HelloWorld.java,看有无该文件。

Q: 为什么 java HelloWorld 不成功?
经常会发现这样的错误:
java.lang.NoClassDefFoundError: HelloWorld
Exception in thread "main"
A: 首先可能是你CLASSPATH没有设置正确,请按照上面的那个步骤进行设置。如果你路径设置正确了,请确认你的类名是否正确,JAVA中大小写是区分的,看看你的类名是否正确。


Q: NullPointerException的原因?
A: NullPointerException发生的原因是操作了一个为null的变量,比如使用该为null变量的【.】操作.如

小心噢,这个错误初学者很容易犯,就是初始化一个数组,没有初始化数组中的元素。

1
2
File[] fileSet=new File[3];//只是初始化了fileSet数组,并没有初始化各个元素,各个元素现在仍为null.
fileSet[0].exists();//该操作就会造成NullPointerException异常.




Q:为什么编译提示class YourClass(注:你的类名)is pubic, should be declared in a file named YourClass.java?
A:有两种情况,只有一个解释。两种情况是:
1 把两个public类放在同一个文件中,这样就会出现该问题。
2 一个文件虽然只有一个公共类,但该文件的名字和public的类名不一致(注意大小写,必须和你的public的类的名字大小写完全一样)。

一个解释也就很清楚了,public类所在的文件名不是“类名+.java”。改正的方法也很明白了,一个java文件中只有一个public类,并且该文件名的大小写和public的类的类名完全一致。


Q:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6
A:数组越界,访问数组下标为6的元素时发生的越界异常。


Q:编译提示:不是抽象的,并且未覆盖超类或接口中的抽象方法。
例如如下代码:

1
2
3
4
5
6
7
8
9
public class check extends Applet implements ItemListener{
      public void init(){ 
      .......
      } 
      
      public void itemStateChange(ItemEvent e){
      ......
      }
}


编译提示:check不是抽象的,并且未覆盖java.awt.event.itemListener中的抽象方法:itemStateChanged(java.awt.event.ItemEvent)

A: 编译提示中说得很明确。check实现了ItemListener,但却没有覆盖其中的抽象方法:itemStateChanged(java.awt.event.Item.Event)。检查上边的代码,其中的方法名错写成itemStateChange,最后一个单词是Changed。
在java中,如果类继承了超类,或是实现了接口,而没有实现其中的抽象方法,该类必须被声明为abstract类,否则就会出现如上的提示。出现这种错误的原因有三:1 没有写这个方法。2 写这个方法了,但是方法的签名和需要的不一样,容易出现方法名写错。3 参数类型不一致,参数顺序不一致。其中方法名写错最容易出现。
这种情况下,仔细对照ItemListener的API文档,看看自己写的方法和其中的抽象方法的方法名,参数类型,参数顺序是否相同。仔细检查应该可以发现问题,那时必将会心一笑,原来如此简单,:)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值