我为我正在编写的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是另一个具有默认构造函数的类. Client是主类,它接受http请求并将JSON对象传递给Class2构造函数.基本上,这是在Class1和Class2构造函数被调用之前代码执行的一部分.因此它不是由编译错误直接引起的,但我怀疑它们与我的编码环境更常见的相同问题有关.
谢谢,
保罗
解决方法:
我本来希望将此作为评论,但因为我没有声誉,所以我不能.我意识到这也是一个非常晚的反应,但不知道你是否找到了答案.我在谷歌搜索答案时遇到了这个问题.
我也相信这个错误与代码无关,而是由NetBeans创建的错误.我发现相同的代码编译并在一台机器上的NetBeans中运行良好,但在我第一次遇到错误的其他地方没有.
我的解决方案是关闭NetBeans,清除NetBeans缓存并重新启动NetBeans.
我使用的是8.0版,我的缓存位置是:
〜/ .cache / netbeans的/ 8.0 /
我删除了文件夹中的所有内容,并在下次运行时一切都很好.
对于旧版本,我相信缓存可能位于不同的位置,可以通过从帮助菜单打开about窗口找到.