Eclipse PDT:对于< class>默认的php类,如DateTime、Exception等,“无法解析为类型

vsnjm48y  于 2022-11-04  发布在  Eclipse
关注(0)|答案(9)|浏览(205)

在最近一些Eclipse更新和工作区更改后,我发现在PDT中验证PHP代码时出现了一些问题。在为我的项目重新添加所有外部库后,每个外部类都是可解析的,但对于PHP基类,如“DateTime”或“Exception”,我得到了一个错误/注解“DateTime cannot be resolved to a type”。PHP验证版本设置为7.1,但即使设置更低,也会产生错误。
如何修复此验证问题?

j1dl9f46

j1dl9f461#

这里有许多可能的情况;我的是一个相当老的项目,有一个坏的buildpath配置。但是使用GUI我不能修复它。
在Eclipse关闭时向项目文件夹中的.buildpath文件添加下面的行,然后重新启动Eclipse,可以解决这个问题:
<buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/>
但是,另外,如果代码使用命名空间,则需要使用\DateTime而不是DateTime,或者在顶部添加'use DateTime';
(使用Eclipse PDT does not propose all php functionshttps://bugs.eclipse.org/bugs/show_bug.cgi?id=502184深入研究其他问题的注解后找到的解决方案)

qcuzuvrc

qcuzuvrc2#

如果项目的根文件夹中没有名为**.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)**中运行良好

5jdjgkvh

5jdjgkvh3#

@NextThursday提到了使用全局作用域,在类名前使用“\”。只有当你的代码已经在特定的命名空间中作用时,这才是重要的。

abithluo

abithluo4#

我的是有点不同,但值得一提的是这里的新人喜欢我。
我只是导入项目使用ImportProjects from Folder or Archive。它只是一个文件夹不多不少。
你必须右击你导入的文件夹〉ConfigureConvert to PHP Project ...
Exception上的错误已消失。

t2a7ltrp

t2a7ltrp5#

我最近遇到了一个类似的情况,一个项目的代码在一个网络服务器上,服务器宕机了。当它被恢复时,挂载已经改变了,所以我的一些外部库找不到。下面是我如何修复它:
在我的项目属性-〉php-〉source paths-〉include path libraries选项卡中,我添加了外部代码的路径。然后我在我的项目上运行Build project,接着运行Refresh。警告消失了。

piztneat

piztneat6#

在我的例子中,我使用了composer,然后,eclipse有一个选项来更新构建路径:
Composer -〉更新构建路径

des4xlb0

des4xlb07#

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

use \Psr\Log\LoggerAwareInterface

它将带有红色下划线,并带有“* 导入...无法解析 "的注解,并且在导入之外,这些类带有“ 无法解析为类型 *”。
然而我已经有了.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"/>

然后清理/构建项目马上就解决了这个问题。

tsm1rwdh

tsm1rwdh8#

我最近在Eclipse 2021-06中第二天重新打开一个工作项目时遇到了这个问题...
我所做的就是禁用所有的验证器,从Problems视图中删除所有的错误,然后重新启用验证器。
编辑:我看到它创建了新文件:.settings/org.eclipse.wst.validation.prefs

mv1qrgav

mv1qrgav9#

有时我们一个也没注意到失踪了“;“或“}”。因此,如果该问题以前从未在文件中出现过,请检查是否有新引入的语法错误。

相关问题