Eclipse PDT:"<class> cannot be resolved to a type"默认的 php 类,如 DateTime、Exception 等



在最近的一些Eclipse更新和工作区更改之后,我发现在PDT中验证PHP代码时存在一些问题。为我的项目重新添加所有外部库后,每个外部类都是可解析的,但对于像"DateTime"或"异常"这样的 PHP 基类,我得到一个错误/注释"DateTime 无法解析为类型"。PHP 验证版本设置为 7.1,但即使设置更低也会创建错误。

如何解决此验证问题?

这里有很多可能的情况; 我的是一个相当古老的项目,有一个损坏的构建路径配置。但是使用 GUI 我无法修复它。

在 eclipse 关闭时将以下行添加到项目文件夹中的 .buildpath 文件中,然后重新启动 eclipse 可以解决此问题:

<buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/>

但是,此外,如果代码使用命名空间,则需要使用 \DateTime 而不是 DateTime,或者,在顶部添加"use DateTime";

(在使用Eclipse PDT深入研究其他问题的评论后找到的解决方案并没有提出所有的php函数和 https://bugs.eclipse.org/bugs/show_bug.cgi?id=502184(

如果项目的根文件夹中没有名为.buildpath的文件,只需创建它即可。

文件的内容应如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<buildpath>
<buildpathentry kind="src" path=""/>
<buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/>
</buildpath>

这会将所有文件夹分配为"源文件夹"。

这在Eclipse Oxygen.3a版本(4.7.3a(中工作正常

@NextThursday提到使用全局作用域在类名前使用"\"。仅当代码的范围已限定在特定命名空间内时,这一点才很重要。

我的有点不同,但对于像我这样的新人来说,这里值得一提。
我只是使用Import>Projects from Folder or Archive导入项目.它只是一个文件夹,不多不少。
您必须右键单击导入的文件夹>Configure>Convert to PHP Project ...
Exception上的错误消失了。

我最近遇到了类似的情况,一个项目的代码在网络服务器上,服务器宕机了。当它恢复时,坐骑已经改变,所以找不到我的一些外部库。这就是我修复它的方式:

在我的项目属性->php->源路径->包含路径库选项卡中,我添加了外部代码的路径。然后,我在项目上运行了"生成"项目,然后运行"刷新"。警告消失了。

就我而言,我使用的是作曲家,然后,日食可以选择更新构建路径:

作曲家 ->更新构建路径

我遇到了一个新项目无法识别供应商依赖项(来自vendor文件夹(的问题。 例如,如果我在代码中有:

use PsrLogLoggerAwareInterface

它将用红色下划线标明">进口......无法解析",并且在导入之外,这些类与它们">无法解析为类型"。

然而,我已经.buildpath到位,但如果仔细观察,您会注意到问题:

<?xml version="1.0" encoding="UTF-8"?>
<buildpath>
<buildpathentry kind="src" path="examples"/>
<buildpathentry kind="src" path="src"/>
<buildpathentry kind="src" path="tests"/>
<buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/>
</buildpath>

没错,vendor文件夹没有条目。添加缺少的条目:

<buildpathentry kind="src" path="tests"/>
+   <buildpathentry kind="src" path="vendor"/>
<buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/>

然后清理/构建项目立即解决了问题。

我最近遇到了这个问题,第二天在 Eclipse 2021-06 中重新打开了一个工作项目......

我所做的是禁用所有验证器,从"问题"视图中删除所有错误,然后再次重新启用验证器。然后项目>验证修复了它!

编辑:我看到它创建了新文件:.settings/org.eclipse.wst.validation.prefs

有时我们没有注意到缺少";"或"}"可能会导致此问题。因此,如果问题以前从未在文件中发生过,请检查是否有任何新引入的语法错误。

最新更新