我为我正在编写的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构造函数被调用之前代码执行的一部分。所以它不是由编译错误直接引起的,但我怀疑它们与我的编码环境中更常见的相同问题有关。
谢谢, 保罗
答案 0 :(得分:41)
我本来希望将此作为评论,但因为我没有名声,所以我无法做到。我意识到这也是一个非常晚的反应,但不知道你是否找到了答案。我在谷歌搜索答案时遇到了这个问题。
我也相信这个错误与代码无关,而是由NetBeans创建的错误。我发现在一台机器上编译并运行了相同的代码并在NetBeans中运行良好,但在我第一次遇到错误的情况下没有运行。
我的解决方案是关闭NetBeans,清除NetBeans缓存并重新启动NetBeans。 我使用的是8.0版,我的缓存位置是:
〜/ .cache / netbeans的/ 8.0 /
我删除了文件夹中的所有内容,下次运行时一切都很好。
对于旧版本,我认为缓存可能位于不同的位置,可以通过从帮助菜单打开about窗口找到。
答案 1 :(得分:4)
确保您在班级中输入了正确的包裹名称。
答案 2 :(得分:2)
我遇到了同样的问题,在我的案例中,解决方案非常简单。
案件:
我从我正在工作的项目的包中复制/粘贴来自另一个项目的一些类
他们中的一些人有旧的包裹声明,编译器没有抱怨(因为他的原因)
当我使用一种带有返回类型的方法之一的错误包装&#39;类出现了这个错误。
(类型错误)
解决方案
要解决这个问题,我将包声明更改为正确的声明!
答案 3 :(得分:1)
我在 netbeans 8.0 上遇到了同样的问题。以下技巧应该解决它:
右键点击该项目 - &gt;属性 - &gt;构建 - &gt;编译==&gt;取消选中“save on save”然后单击“确定”
答案 4 :(得分:1)
我遇到同样的问题并使用例外答案修复,因为我使用的是Windows 10,所以这里是缓存文件夹位置:
C:\ Users \用户名\应用程序数据\本地\的NetBeans \缓存\ 8.1
AppData是一个隐藏文件夹。
答案 5 :(得分:0)
我遇到了这个问题。我通过将所有依赖的jar添加到项目/文件
来解决它答案 6 :(得分:0)
Grease的回答是重新删除netbeans缓存的内容。我在MacOS Sierra上使用Netbeans 8.1。
删除“/Users//Library/Caches/NetBeans/8.1 /”
下的所有内容答案 7 :(得分:0)
这是对润滑脂的补充。 (由于缺乏声誉,我无法添加评论。)
有时我会遇到相同的问题,并且总是删除完整的文件夹,因此NetBeans必须重建Maven-stuff,这可能需要几分钟的时间。
如果有人使用maven并且不希望NetBeans完全重建maven仓库和-index,请不要删除NetBeans缓存文件夹中的以下文件夹:
只需使用NetBeans 11.3进行测试: 不删除这三个文件夹会使错误消失,但不要打扰。 我可以想象这与旧版本的NetBeans相同。
答案 8 :(得分:0)
我决定在采用“核”方法之前停止/重新启动NetBeans 8.2。我回来后,错误消失了。