2017-10-27 3 views
2

自分のアプリケーションにカスタムのSymfonyバンドルをインストールしようとしました。私は成功しvendorフォルダにcomposer installでバンドルをインストールしローカルのSymfonyバンドルをロードするときにClassNotFoundExceptionが発生する

. 
├── composer.json 
├── composer.lock 
└── src 
    └── Namespace 
     └── CoreBundle 
      ├── Controller ... 
      ├── CoreBundle.php 
      ├── Entity ... 
      ├── Helper ... 
      ├── Repository ... 
      ├── Resources ... 
      ├── Services ... 
      └── Tests ... 

: は、私は、次のフォルダ構造を持つバンドルを作成しました。 sym-linkとしてvendor/namespace/core-bundleの下にあります(私はローカルにロードしました)。私はAppKernel.phpnew Namespace\CoreBundle\CoreBundle(),を追加した後

、これは次のエラーを生成します。

(1/1) ClassNotFoundException 

Attempted to load class "CoreBundle" from namespace "Namespace\CoreBundle". 
Did you forget a "use" statement for another namespace? 
in AppKernel.php (line 25) 

SYM-リンクに問題がある場合、私は、vendorフォルダに手動でフォルダをコピーしようとしましたが、それ同じエラーが発生します。私はdump(ClassMapGenerator::createMap('/path/to/symfony'));でオートロードされたクラスをチェックアウトして、そこに私の名前空間が見つかりませんでした。私の設定が間違っているのか、フォルダ構造ですか?より多くのコードが必要な場合は、できるだけ早く質問を更新します。

更新:マイバンドルcomposer.json

{ 
    "name": "namespace/core-bundle", 
    "license": "proprietary", 
    "type": "symfony-bundle", 
    "autoload": { 
    "psr-4": { 
     "Namespace\\CoreBundle\\": "src/Namespace/CoreBundle" 
    } 
    }, 
    "require": { 
    "doctrine/doctrine-bundle": "^1.6", 
    "doctrine/orm": "^2.5", 
    "liip/imagine-bundle": "1.9.*", 
    "php": ">=5.5.9", 
    "symfony/symfony": "3.3.*" 
    }, 
    "require-dev": { 
    }, 
    "extra": { 
    "branch-alias": { 
     "dev-master": "development" 
    } 
    } 
} 
+1

あなたは 'あなたのCoreBundlesを投稿することができます作曲家.json'。 – ccKep

+0

私は 'composer.json'を追加しました。 – mgluesenkamp

+1

autoload psr-4の部分で '' Namespace \\ CoreBundle \\ ":" src/"'と言うべきではないですか?編集:nvm - psr-0を考えていた。 'composer dump-autoload -a'を使って手動でオートローダーをダンプした後で動作しますか? – ccKep

答えて

1

あなたcomposer.jsonautoloadセクションのすべての手動アップデート後:

{ 
    "autoload": { 
     "psr-4": { 
      "Namespace\\CoreBundle\\": "src/Namespace/CoreBundle" 
     } 
    } 
} 

CLI経由であなたの生成/vendor/autoload.phpをリフレッシュすることを忘れないでください:

composer dump 
# shortcut for `composer dump-autoload` 
1

私はあなたがcomposer.jsonであなたのautoloadで自動ロードを追加する前にcomposer installを実行している感覚を持っています。この問題は、インストールで.jsonファイルが無視され、ロックファイルがまっすぐに進み、以前のすべての依存関係がロックされ、以前にテストされた状態になります。

あなたが探しているものはcomposer updateです。 .lockファイルを破棄し、将来のインストールコマンド用の新しい.lockファイルを生成します。

+0

私は手動で '.lock'ファイルを削除し、' composer update'を実行しましたが、問題は解決しません。 : – mgluesenkamp

+0

あなたのエントリスクリプトに 'require( 'path/to/vendor/autoload.php')'がありますか? – SmartCoder

+2

あなたの助けをありがとう。 – mgluesenkamp

関連する問題