当前位置: 首页 > 面试题库 >

捆绑创建之后,Symfony3 ClassNotFoundException

贝财
2023-03-14
问题内容

我想在Symfony中启动一个新的3.3项目,并像往常一样开始:

1.)创建新项目: symfony new ArtProject

2.)创建一个新的捆绑包:php app/console generate:bundle(Paul / ArtBundle,yml,src /)

然后我运行本地服务器,当我打开127.0.0.1:8000时,我得到了一条漂亮的消息:

(1/1)ClassNotFoundException

尝试从命名空间“ Paul \ ArtBundle”加载类“
PaulArtBundle”。您是否忘记了另一个名称空间的“使用”语句?在AppKernel.php中(第19行)

奇怪的是,到目前为止,我还没有弄清楚为什么会发生这种情况。在创建捆绑包之前,没有任何错误。我看到了symfony的典型开始。

public function registerBundles()
{
    $bundles = [
        new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
        ......
        new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
        new AppBundle\AppBundle(),
        new Paul\ArtBundle\PaulArtBundle(),
    ];
}
<?php

namespace Paul\ArtBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class PaulArtBundle extends Bundle
{
}

知道那里发生了什么吗?我没有改变任何事情,我只运行了这些命令。


问题答案:

我刚刚使用以下命令安装了S3.3.4(撰写本文时为最新版本)的新副本:

composer create-project symfony/framework-standard-edition s334 "3.3.4"
bin/console generate:bundle
Share across multiple apps: yes
namespace: Paul\ArtBundle
bundle name: PaulArtBundle
Target Directory: src/

刷新浏览器,并确保我收到未找到类的消息。

引入新的名称空间后,generate:bundle命令不会更新composer.json的autload部分。编辑composer.json并:

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

然后跑

composer dumpautoload

并重新启动服务器(也许)。那应该解决bundle类找不到的问题。

自从标准将所有内容放到AppBundle下以来,我就没有使用过generate:bundle命令了很多时间,所以我不知道它已经“中断”了多长时间。但是上个星期左右至少有三个问题表明这是最近发生的事情。

顺便说一句,当我刷新浏览器时,我看到了“ Hello World”,这让我有些惊讶。原来,新的包覆盖/路由,这也很特殊。

如果有人想知道为什么会这样,Symfony 3.2从

#composer.json
"psr-4": { "": "src/" },
To
"psr-4": { "AppBundle\\": "src/AppBundle" },

尽管我认为拼出单个名称空间可能会“更好”,但您始终可以将其更改回去。不确定。

这是一个具有更多详细信息的问题:https : //github.com/symfony/symfony-
standard/issues/1098

看起来维护者倾向于对速度的微小改进而不是破坏现有命令。那好吧。Symfony Flex应该再次使一切变得更好。



 类似资料:
  • 我目前正在创建一个时间线卡片,方式如下: 这将在时间线中创建一张活卡。我尝试添加另一个相同的标签,以为它会把他们捆绑在一起,最近的将是捆绑封面卡,但它没有做到这一点。 我看了一下文档,我能找到的只是如何使用镜像API来实现它。那么有没有一种方法可以使用GDK创建捆绑卡呢?还是只有通过镜像API才可用?多谢了。

  • 问题内容: 我正在使用Ant构建一些Java项目。在某些情况下,我有一个lib/目录,该目录包含JAR文件形式的外部依赖项。 在构建过程中,我通过将目录中zipfileset每个jar的a添加到bundlejar文件中,创建了一个捆绑jar,其中包含项目代码以及相关性lib/。 问题是,每次添加一个jar或更改名称时,我都需要记住要更新build.xml文,因为我找不到zipfilesets一种自

  • 我正在努力与java应用程序的交付。我用Eclupse Luna编写了它,并设法导出了一个带有外部文件(图像)的jar。因此,现在我有一个来自Eclipse的ant build xml文件,我可以运行,并且我可以双击jar文件以执行它,只有在复制了所有外部映像的数据文件之后。 现在我想创建一个Mac包,这样一个有图标的project.app可以添加到Dock中,并且可以在其中包含java jdk(

  • 问题内容: 如何从jar库创建OSGi捆绑包? 问题答案: 如果您使用的是eclipse:有一个向导。 它允许您选择许多jar库,并创建一个包含这些jar的插件项目(即OSGi捆绑包)。 你可以在这里找到它:

  • 我直接从android网站为我的mac下载了ADT捆绑包。一切都很好,直到我创建了一个新项目,eclipse创建了我的项目以及一个名为“appcompat_v7”的文件夹。 但我不这样做,因为这样我就不能遵循教程,因为你不能扩展一个方法超过一次,例如: 我能做什么?我不能遵循任何教程。我正在尝试这个(https://www.youtube.com/watch?v=E780gbh6vLU),但我不能

  • 当我跑的时候