我为我正在编写的 java 程序定义了两个类,将它们称为 Class1 和 Class2。在 Class1 的构造函数主体中,我调用了类 2 的构造函数。但是,我收到编译错误
"The type of Class1(JSONObject) is erroneous".
我试着用谷歌搜索这个错误,但在任何地方都找不到关于这个确切错误的任何讨论,所以我想我会把它发布到堆栈交换。
有人可以解释这是什么类型的错误吗? class1 和 class2 都非常简单:它们都只有一个构造函数方法,在这两种情况下都将 JSONObject 作为参数。唯一的导入是针对 JSON 的。有什么建议吗?
//class1 definition
public class Class1 {
public Class1(JSONObject jObject){
try{
//parsing json and saving class variables
} catch(Exception e)
{
System.out.println("Class1 JSON Exception: " + e.getMessage());
}
}
}
//constructor of Class2
Class1 user;
public Class2(JSONObject jObject){
try{
JSONObject userJSON = jObject.getJSONObject("user");
user = new Class1(userJSON); //error occurrs here
}
catch(Exception e){
System.out.println("Class2 JSON Exception: " + e.getMessage());
}
}
}
编辑:即使出现此编译错误,当我尝试运行代码时,我也会收到以下运行时错误:
Exception in thread "main" java.lang.ExceptionInInitializerError
at bitcoin.thesis.Client.main(BTCJamClient.java:18)
Caused by: java.lang.RuntimeException: Uncompilable source code - Erroneous tree type:
thesis.JSONArray
at thesis.Class3.<clinit>(Class3.java)
... 1 more
Java Result: 1
此处的 Class3 是另一个具有默认构造函数的类。客户端是接收 http 请求并将 JSON 对象传递给 Class2 构造函数的主要类。基本上这是在调用 Class1 和 Class2 构造函数之前执行代码的部分。所以它不是直接由编译错误引起的,但我怀疑它们与我的编码环境中普遍存在的同一个问题有关。
谢谢, 保罗
最佳答案
我宁愿将此作为评论留下,但由于我没有声誉,所以我不能。我意识到这也是一个很晚的回复,但不知道您是否找到了答案。我自己在谷歌上搜索答案时遇到了这个问题。
我还认为此错误与代码无关,而是由 NetBeans 造成的错误。我发现相同的代码在一台机器上的 NetBeans 中编译并运行良好,但在我第一次遇到错误的另一台机器上却没有。
我的解决方案是关闭 NetBeans,清除 NetBeans 缓存并重新启动 NetBeans。 我使用的是 8.0 版,我的缓存位置是:
~/.cache/netbeans/8.0/
我删除了文件夹中的所有内容,下次运行时一切正常。
对于旧版本,我相信缓存可能位于不同的位置,可以通过从帮助菜单中打开关于窗口找到它。
关于java - <class> 的类型是 netbeans 中的错误错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23459741/