Symfony从2.8-3.3切换到ClassNotFoundException使用语句缺少命名空间?

时间:2017-07-25 15:39:02

标签: php symfony exception doctrine-orm

就在最近,我们决定从symfony 2.8升级到3.3也注意到这一点我觉得最好开始一个新的symfony项目并且只是拉过项目的某些部分并更改在这个主要版本上改变的关键所需项目升级。我已经解决了大部分问题,但是目前我认为这意味着我可能会遇到更多我怀疑的问题。这是现在的:

C:\xampp\htdocs\Fresh_Api>php bin/console server:run PHP Fatal error:  Uncaught Symfony\Component\Debug\Exception\ClassNotFoundException: Attempted to lo ad class "CommandListener" from namespace "Directive\MultiTenant\MasterBundle\EventListener". Did you forget a "use" statement for another namespace? in C:\xampp\htdocs\Fresh_Api\var\cache\dev\a ppDevDebugProjectContainer.php:580 Stack trace:
#0 C:\xampp\htdocs\Fresh_Api\vendor\symfony\symfony\src\Symfony\Component\DependencyInjection\Contai ner.php(331): appDevDebugProjectContainer->getAppBundle_CommandListenerService()
#1 C:\xampp\htdocs\Fresh_Api\var\cache\dev\appDevDebugProjectContainer.php(965): Symfony\Component\D ependencyInjection\Container->get('app_bundle.comm...')
#2 C:\xampp\htdocs\Fresh_Api\vendor\symfony\symfony\src\Symfony\Component\EventDispatcher\EventDispatcher.php(229): appDevDebugProjectContainer->{closure}()
#3 C:\xampp\htdocs\Fresh_Api\vendor\symfony\symfony\src\Symfony\Component\EventDispatcher\EventDispatcher.php(61):Symfony\Component\EventDispatcher\EventDispatcher->sortListeners('console.command')
#4 C:\x in C:\xampp\htdocs\Fresh_Api\var\cache\dev\appDevDebugProjectContainer.php on line 580

这当然是在我尝试运行php bin/console server:run

之后

我尝试删除缓存,删除自动加载文件,删除供应商文件并重新安装composer。我试图查看是否有任何缺少的依赖项。 (我本可以错过一些东西)

它正在谈论的文件是一个生成的文件,因此它没有正确地注意到该类存在。

这是CommandListener

namespace Directive\MultiTenant\MasterBundle\EventListener;

use Directive\MultiTenant\MasterBundle\Connection\ConnectionWrapper;
use Directive\MultiTenant\MasterBundle\Entity\Tenant;
use Directive\MultiTenant\MasterBundle\Repository\TenantRepository;
use AppBundle\TenantProviderInterface;
use Doctrine\DBAL\Connection;
use Doctrine\DBAL\Schema\AbstractSchemaManager;
use Exception;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Event\ConsoleCommandEvent;
use Symfony\Component\Console\Input\InputOption;

appDevDebugProjectContainer有点大,所以我等着看是否有任何响应,看看它是否甚至需要,因为我确定它是导致它不能生成所需的正确信息的其他东西。

感谢你提供的任何意见。

编辑:这是一个链接,注意到它是同一个问题但是这个问题在这之前已经解决了。这是我的部分代码。

 "autoload" : {
    "psr-4": {
        "AppBundle\\": "src/AppBundle"
    },
    "classmap": [ "app/AppKernel.php", "app/AppCache.php" ]
},

这已经修好了。这是我用来尝试解决我的问题的另一个链接,当然没有任何帮助。

php bin/console symfony commands give a fatal error

和另一个

Symfony 3.3 Getting ClassNotFoundException

1 个答案:

答案 0 :(得分:0)

All Credit归Cerad所有答案遗憾地重复,但我没有注意到需要的东西。自动加载器需要知道从哪里拉类,并且必须使用symfony现在执行的新方式进行设置。这是我的附加代码的示例,以使其工作。

"autoload" : {
    "psr-4": {
        "AppBundle\\": "src/AppBundle",
        "BundleName\\": "src/BundleName"
    },
    "classmap": [ "app/AppKernel.php", "app/AppCache.php" ]
},