Java 碰到的报错

1.错误:The field Point.x is not visible
The field Point.y is not visible
原因:private的只能在类内使用,实例也不行。

2.错误: The assignment to variable name has no effect
原因:name=name等价于形参自己给自己赋值。

3.错误:Cannot use this in a static context
原因:this关键字不能在static静态方法中使用,static方法是类方法,先于任何的实例(对象)存在。即Static方法在类加载时就已经存在了,但是对象是在创建时才在内存中生成。而this指代的是当前的对象.在方法中定义使用的this关键字,它的值是当前对象的引用.也就是说你只能用它来调用属于当前对象的方法或者使用this处理方法中成员变量和局部变量重名的情况. 而且,更为重要的是this和super都无法出现在static 修饰的方法中,static 修饰的方法是属于类的,该方法的调用者可能是一个类,而不是对象.如果使用的是类来调用而不是对象,则this就无法指向合适的对象.所以static 修饰的方法中不能使用this.

4.警告:The static method xxx from the type xxxshould be accessed in a static way
static的方法直接用类名调用就可以了

5.错误:The method distance cannot be declared static; 
static methods can only be declared in a static or top level type

方法“距离”不能声明为静态;静态方法只能声明为静态或顶级类型
原因:(不确定是不是??)先在main方法下面写个静态方法,
把main方法的的代码剪切到下面的方法里,然后在把这个静态方法在main方法里调运
编译运行。

6.错误:Syntax error on token ";", , expected
原因:java中变量的声明可以不在方法中,但语句只能出现在方法中,
可以再声明变量的时候就赋初值,但如果要单独赋值就必须写在方法中。

7.错误:The public type Point must be defined in its own file
即The public type *** must be defined in its own file ***.

原因:由于定义的JAVA类同文件名不一致;
解决方法:
 1、把文件名修改同公共类一样的名字;
 2、把类名修改成同文件名;
 3.子类继承父类时,不需要再用public修饰
    4.多打了括号导致误报。

8.错误:No enclosing instance of type 类名 is accessible. 
Must qualify the allocation with an enclosing instance of type 类名
(e.g. x.new A() where x is an instance of 类名).

原因:方法一:分为两个class 不用内部类
方法二:给内部类加个static,因为main方法是静态的。
 在一个类的静态成员中去访问非静态成员之所以会出错是因为在类的非静态成员不存在的时候
静态成员就已经存在了,访问一个内存中不存在的东西当然会出错。
定义类主类分开

我写的内部类是动态的,也就是开头以public class开头。
而主程序是public static class main。
在Java中,类中的静态方法不能直接调用动态方法。
只有将某个内部类修饰为静态类,然后才能够在静态类中调用该类的成员变量与成员方法。
所以解决办法是将public class改为public static class.

9.错误:Cannot make a static reference to the non-static method
原因:在一个类中写了一个public String getContent()方法和一个main()方法,
getContent()方法中包含了getClass()方法,在main()方法中直接调用了getContent()就出现如题的错误。

解决方法:先实例化类,然后再调用getContent()就没有问题了

10.错误:错误: 在类中找不到 main 方法, 
请将 main 方法定义为:public static void main(String[] args)
否则 JavaFX 应用程序类必须扩展javafx.ap
原因:编码问题,主类与自定义类系统无法分辨。
一个Java源文件中最多只能有一个public类,当有一个public类时,源文件名必须与之一致,
否则无法编译,如果源文件中没有一个public类,则文件名与类中没有一致性要求。

11.错误:The public type *** must be defined in its own file***
原因:解决方法: 
  1、把文件名修改同公共类一样的名字; 
  2、把类名修改成同文件名; 
  3.子类继承父类时,不需要再用public修饰

12.错误:Exception in thread "main" java.lang.NullPointerException at ClassDemo03.main(ClassDemo03.java:12)
原因:某个类没有实例化,访问类属性时,出现空指针异常

13.错误:Exception in thread "main" java.lang.StackOverflowError
原因:创建对象时,在父类构造方法new子类对象,这样会造成循环调用构造方法

14.错误:Syntax error, insert "}" to complete ClassBody
原因:存在空格

15.错误:Void methods cannot return a value
原因:是不可以在返回值为void 的方法中写答return 这个关键字的。

16.错误:Duplicate local variable XX
原因:是由于定义了两个同名变量引起的。
【基本解释】:Duplicate local variable session,
顾名思义,就是重复的局部变量session。也就是说在你写的页面中,已经存在了一个session。

17.错误:Syntax error on token(s), misplaced construct(s)
原因:看看括号是不是对应,函数格式规范不规范

18.错误:Multiple markers at this line
原因:在接口中定义的这样的都是常量(static final修饰的变量都是常量),只要初始化了都不可以再改变,即不可以再重新赋值,即使在你的实现类里面,也不可以去改变他的值。

19.错误:Implicit super constructor Stock() is undefined for default constructor. Must define an explicit constructor
原因:子类在继承时,必须在自己的构造函数中显示调用父类的构造函数,这样就保证了子类在初始化前父类被实例化。我们再看,父类中,
1、我未定义隐式无参数的构造函数;
2、我定义了一个有参数的构造函数,所以在子类中使用super()方法,编译器是无法调用的。
也可构造空参

20.警告:ArrayList is a raw type. References to generic type ArrayList<E> should be parameterized
ArrayList下面的警告是说ArrayList没有进行对象实例化(也就是说没指定ArrayList存放的类型是什么)。
解释:“List list = new  ArrayList();”会出现安全警告的原因是list和Arrylist都是object对象,没有进行实例化,导致警告的。
解决办法:将上面的代码写成“List<Object> list = new  ArrayList<Object>();”这种情况下就不会出现警告了。

21.错误:Constructor call must be the first statement in a constructor
换句话说就是super()和this()都必须在构造方法的第一行。
this(有參数/无參数) 用于调用本类对应的构造函数
super(有參数/无參数) 用于调用父类对应的构造函数
原因:(1):super()在第一行的原因就是: 子类有可能访问了父类对象, 
比如在构造函数中使用父类对象的成员函数和变量,
在成员初始化使用了父类, 在代码块中使用了父类等, 
所以为保证在子类可以访问父类对象之前要完成对父类对象的初始化
(2)this()在第一行的原因就是: 为保证父类对象初始化的唯一性. 我们假设一种情况, 类B是类A的子类,如果this()可以在构造函数的任意行使用, 那么会出现什么情况呢? 首先程序运行到构造函数B()的第一行,发现没有调用this()和super(), 就自动在第一行补齐了super() , 完成了对父类对象的初始化,然后返回子类的构造函数继续执行, 当运行到构造函数B()的"this(2) ;"时, 调用B类对象的B(int) 构造函数,在B(int)中, 还会对父类对象再次初始化! 这就造成了对资源的浪费,
 当然也有可能造成某些意想不到的结果, 不管怎样,总之是不合理的, 所以this() 不能出现在除第一行以外的其他行!

(3)不能同时出现,是因为this和super都要定义在第一行,所以只能有一个;那么为什么要定义在第一行呢?先说super,因为子类继承了父类的属性和方法,所以在先初始化父类的属性和方法,这样子类才可以初始化自己特有的,因为,或者自定义了带参的super,这样就初始化了父类的成员了,所以写了this的构造函数不能再写super了,因为实例化一个对象运行两次super是不安全的。this放在第一行,也是因为要先初始化父类和this代表的构造函数先,因为当前构造函数可能用到那些成员,所以那些成员得要先初始化。

22.错误:Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
原因:这个错误的意思是没有获取到这个位置的元素。
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0。
出现时一般后面都会跟 Index: xx, Size: xx 。
具体xx不一定,出现这个错误的原因有两种:
一:索引超出边界造成的异常,
二:就是有一个数组想要去取size位置上的数据,发现没有值可以取得。
所以,归根到底是要取的值是空的造成的。

23.错误:Cannot make a static reference to the non-static field num
原因:这个错, 是因为在静态方法中,不能直接访问非静态成员(包括方法和变量)。 
改成静态

24.错误:The type must implement the inherited abstract methodXXX报错的解决
原因:
在接口中定义的函数 没有在类中定义,
解决方法:
检查接口中定义的函数是否与类中的相同,尤其是函数名

25.错误:The serializable class XXX does not declare a static final serialVersionUID field of type long
原因:但只要任何类别实现了Serializable这个接口的话,如果没有加入 serialVersionUID,Eclipse都会给出warning警告,这个serialVersionUID是为了让该类别 Serializable向后兼容。 
在代码中可以随便写一个serialVersionUID,而在Eclipse中它会帮助生成一个,且有两种生成方式: 

26.错误:The hierarchy of the type IndexServlet is inconsistent
原因:自己的类继承于某个类,这个类或者这个类继承的类或者再往上继承的某个类所在的jar包没有被引入。
 

  • 5
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钻仰弥坚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值