当前位置: 首页 > 知识库问答 >
问题:

Java:需要意外类型:找到变量:值突然

湛功
2023-03-14

我不确定我做了什么,但我似乎把我的项目搞砸了,因为它工作得很好,构建、编译等都没有问题,但现在构建过程给了我这个错误:

java: unexpected type
  required: variable
  found:    value

它的不同寻常之处在于,它引出了一个论点,我正在将它传递到一个图书馆类中,这个类是我编写的,并且已经在我几乎所有的项目中使用了近两年。

归结起来就是这个。。。库中的方法有如下两个参数:

public void myMethod(double width, double height) {
    this.width = width;
    this.height = height;
}

我这样调用这个方法:

MyClass myClass = new MyClass();
myClass.myMethod(200.0, 70.0);

当我点击错误链接时,它直接跳到我传递到参数中的第一个数字。因此,因为它说如果我这样做,它需要一个变量,所以我没有得到错误:

double w = 200;
double h = 70;
myClass.myMethod(w,h);

它正在抛出错误的这些代码行已经在这个项目中存在了几个月了,以前从未抛出过错误。事实上,它已经编译并运行了一整天,但突然之间就不是了。

另外,如果我创建一个新项目,使用相同的库,并将完全相同的代码行复制和粘贴到新项目中,它工作得很好...只有这个项目突然出现了这个错误,我不知道我做了什么导致它。

有人有什么想法吗?我在用IntelliJ。。。如果这很重要的话。

共有2个答案

景靖琪
2023-03-14

通常,当我在IntelliJ IDEA中遇到奇怪和无法解释的错误时,我会转到File-

易研
2023-03-14

我最终通过创建一个新项目来“解决”这个问题,然后将我所有的类/资源等迁移到新项目。它现在构建、编译和运行都很好。然而,除了项目中的某种腐败之外,不知道还有什么问题?我可能会打电话给JetBrains,看看这是不是他们以前见过的东西。

编辑:

我终于找到了错误的原因,这肯定是IntelliJ的问题。

我有一个包含在项目模板中的类,其中类中的所有内容都声明为公共静态,以便项目中的任何其他类都可以使用这些资源。那堂课上有一句台词不知何故搞砸了。这就是它在损坏状态下的样子:

public static final String CSS_TABLE_VIEW  = Objects.requireNonNull(resource) = Objects.requireNonNull(resource.getResource("StyleSheets/TableView.css")).toExternalForm();

这就是它应该看起来的样子:

public static final String CSS_TABLE_VIEW  = Objects.requireNonNull(resource.getResource("StyleSheets/TableView.css")).toExternalForm();

错误被抛向完全不同的类中完全正常的代码,这些代码行也没有引用那个损坏的类。

我试图使缓存无效,我甚至完全删除了项目文件夹中除了src文件夹之外的所有内容,然后我创建了一个新的来自现有来源的项目,将其指向该项目文件夹,因为我知道IntelliJ必须完全重建其部分项目,错误仍然发生在未损坏的类中。

当我创建一个新项目,然后复制类时,新项目有它自己的受损类的副本,所以我没有复制它,这就是为什么创建新项目并将类复制到它解决问题的原因。

直到我走进每一堂课,看了所有的东西,我才发现那堂课上那条受损的线。

有趣的是,在我修复了那条线并构建了这个项目后,它构建得很好。然后,我做了命令Z来撤销修复,这样它就又被损坏了,但是当我构建项目时,建筑商抓住了我修复过的损坏的线路...

所以无效缓存不起作用,从源文件重建项目也不起作用。。。有一次我不得不修复错误,然后建设者从那一刻起发现了正确的问题。我怀疑,如果我让它受损,然后从源代码进行另一次重建,它很可能会重复同样的问题。

我还有一个JetBrains的案子要处理,所以我们会看看他们怎么说。

编辑#2:

在与Jet Brains的一名技术人员讨论后,我告诉他关闭这个案例,因为我基本上解决了这个问题,但他并不急于这样做,所以我保留了一份项目的副本,该副本被破坏到我可以解压缩一个文件的地方,并从源代码创建一个新项目,然后尝试构建该项目,该项目将在没有错误的类中抛出不明确的错误。

Jet Brains要求我提供一份我提供的已损坏项目的副本,他能够重新创建错误,并最终提交了一份bug报告,如果有人感兴趣,可以在这里查看和跟踪该报告。

 类似资料:
  • 由于某种原因,这段代码给出了编译错误,有人能解释为什么吗?

  • 在第五行错误,Java抱怨位置是一个值而不是变量,请帮助

  • 我有一张带有以下原型的桌子: 我想创建一个过程来插入具有特定长度的随机字符串,我写了以下内容: 这样说: 问题是它插入NULL作为NAME字段。 我的怀疑是,当同时循环终止时,对所做的更改超出了范围。 我还尝试使用如下的全局变量: 也在程序之外声明了,但没有发生什么特别的事情 感谢您的帮助<向你问好。

  • 问题内容: 每当启动应用程序spring启动时,我都会收到以下错误。 申请开始失败 描述: com.base.model.AbstractDao中的现场会话需要找不到“ org.hibernate.SessionFactory”类型的Bean。 行动: 考虑在配置中定义类型为“ org.hibernate.SessionFactory”的bean。 我添加了我的应用程序的实现: POM.xml 应

  • 问题内容: 这是我的代码。我要获取数据库中存在的所有表名和列名。现在我需要知道列的类型,例如其int或varchar或其他内容。在这方面有人可以帮助我吗?顺便说一句,这是C#。 问题答案: 一种方法是使用OleDbCommand.ExecuteReader读取找到的每个表的架构。 这样,您可以遍历DataSet的DataTable集合并获取列名称和列字段类型。 这样做可能是更好的方法,但是我认为这