IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Symfony2, PHPExcelBundle : ClassNotFoundException [2.x]


Sujet :

Symfony PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Symfony2, PHPExcelBundle : ClassNotFoundException
    Bonjour à tous !

    J'ai pu installer PHPExcelBundle via composer puis j'ai enregistré le nouveau bundle dans app\AppKernel.php.

    AppKernel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    <?php
     
    use Symfony\Component\HttpKernel\Kernel;
    use Symfony\Component\Config\Loader\LoaderInterface;
     
    class AppKernel extends Kernel
    {
        public function registerBundles()
        {
            $bundles = array(
                new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
                new Symfony\Bundle\SecurityBundle\SecurityBundle(),
                new Symfony\Bundle\TwigBundle\TwigBundle(),
                new Symfony\Bundle\MonologBundle\MonologBundle(),
                new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
                new Symfony\Bundle\AsseticBundle\AsseticBundle(),
                new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
                new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
                new Liuggio\ExcelBundle\LiuggioExcelBundle(),
                new depCinke\depCinkeBundle\depCinkedepCinkeBundle(),
            );
     
            if (in_array($this->getEnvironment(), array('dev', 'test'))) {
                $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
                $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
                $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
            }
     
            return $bundles;
        }
     
        public function registerContainerConfiguration(LoaderInterface $loader)
        {
            $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');
        }
    }
    Composer.json

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    {
        "name": "symfony/symfony",
        "type": "library",
        "description": "The Symfony PHP framework",
        "keywords": ["framework"],
        "homepage": "http://symfony.com",
        "license": "MIT",
        "authors": [
            {
                "name": "Fabien Potencier",
                "email": "fabien@symfony.com"
            },
            {
                "name": "Symfony Community",
                "homepage": "http://symfony.com/contributors"
            }
        ],
        "require": {
            "php": ">=5.3.3",
            "doctrine/common": "~2.2",
            "twig/twig": "~1.12",
            "psr/log": "~1.0",
            "twitter/bootstrap": "3.2.0",
            "symfony/framework-bundle": "~2.1",
            "phpoffice/phpexcel": "~1.8.0",
            "liuggio/excelbundle": "~2.0",
            "components/jquery": "1.11.1"
        },
        "require-dev": {
            "doctrine/data-fixtures": "1.0.*",
            "doctrine/dbal": "~2.2",
            "doctrine/orm": "~2.2,>=2.2.3",
            "monolog/monolog": "~1.3",
            "propel/propel1": "1.6.*",
            "ircmaxell/password-compat": "1.0.*",
            "ocramius/proxy-manager": ">=0.3.1,<0.6-dev",
            "egulias/email-validator": "~1.2",
            "phpunit/phpunit": ">=3.7",
            "symfony/finder": "~2.0",
            "symfony/form": "~2.1",
            "symfony/class-loader": "~2.1",
            "symfony/validator": "~2.1",
            "symfony/browser-kit": "~2.1",
            "sensio/framework-extra-bundle": "~2.1"
        },
        "autoload": {
            "psr-0": { "Symfony\\": "src/" },
            "classmap": [
                "src/Symfony/Component/HttpFoundation/Resources/stubs",
                "src/Symfony/Component/Intl/Resources/stubs"
            ],
            "files": [ "src/Symfony/Component/Intl/Resources/stubs/functions.php" ]
        },
        "minimum-stability": "stable",
        "extra": {
            "branch-alias": {
                "dev-master": "2.5-dev"
            }
        }
    }
    Répertoire d’installation de phpoffice/phpExcel :

    \Symfony\vendor\symfony\symfony\vendor\phpoffice\phpexcel

    Répertoire d’installation du bundle luiggio :

    Symfony\vendor\symfony\symfony\vendor\liuggio\ExcelBundle\Liuggio\ExcelBundle

    Pourtant je ne cesse d'avoir l'erreur suivante (uniquement quand le bundle luiggio est référencé dans AppKernel.php)
    ClassNotFoundException: Attempted to load class "LiuggioExcelBundle" from namespace "Liuggio\ExcelBundle" in C:\wamp\www\Symfony\app\AppKernel.php line 20. Do you need to "use" it from another namespace?

    EDIT :

    Ci dessous une partie de mon autoload_namespace.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    'PHPExcel' => array($vendorDir . '/phpExcel/Classes', $vendorDir . '/phpoffice/phpexcel/Classes'),
    'Liuggio\\ExcelBundle' => array($vendorDir . '/liuggio/ExcelBundle'),
    Normalement avec cette erreur j'aurais ajouté un 'use' mais cela me parait étrange d'en rajouter un dans AppKernel.
    Avez vous une idée de l'erreur ? Merci !

  2. #2
    Membre expérimenté Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    Hello,

    La casse est-elle respectée ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Hello Nico,

    La casse me semble respectée, de toute manière j'ai laissé composer s'en assurer lui même. Ma seule action a été d'ajouter le bundle au AppKernel, C/C directement du GitHub.

  4. #4
    Membre expérimenté Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    Il y a un truc qui me chagrine dans tes paths, c'est qu'ils ont l'air de se trouver dans les vendors de Symfony et non dans un répertoire qui leur est propre.

    \Symfony\vendor\symfony\symfony\vendor\phpoffice\phpexcel
    Symfony\vendor\symfony\symfony\vendor\liuggio\ExcelBundle\Liuggio\ExcelBundle
    Ce qui se trouve dans le vendor Symfony ne devrait concerner que Symfony, et non des bundles tiers.

    Je ne suis pas expert avec Composer, mais je pense que le problème vient de là : la racine de ton composer c'est Symfony au lieu d'être ton projet. Et toutes les dépendances que tu y ajoutes vont dans ses vendors.

    Voilà à quoi ton fichier composer.json devrait plutôt ressembler imo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    {
        "name": "MonProjet",
        "description": "Mon Projet",
        "require": {
            "php": ">=5.3.3",
            "symfony/symfony": "2.4.*",
            "phpoffice/phpexcel": "~1.8.0",
            "liuggio/excelbundle": "~2.0"
        }
    Je t'ai fait la version très courte, libre à toi de rajouter ce dont tu as besoin, mais à les dépendances directes de Symfony seront installées sans que tu aies besoin de préciser quoique ce soit. Pour le reste il faudra les sortir pour que chaque package ait son répertoire. De cette manière Symfony aura son répertoire, son namespace etc, et les bundles tiers auront le leur également.

    Libre à toi de mettre les versions de php et de Symfony de ton choix, il s'agit là juste d'un exemple.

    ++

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Merci à toi pour ces éléments de réponse, je vais étudier ça

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Hey !

    Je n'ai pas pu tester ma solution avant d'où le déterrage de sujet.

    J'ai créé un composer.json à la racine de mon projet ( C:\wamp\www\Symfony ) avec uniquement le contenu suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {
      "require": {
        "liuggio/excelbundle": "~2.0"
      }
    }
    PHPEcxel et ses dépendances se sont correctement installés dans C:\wamp\www\Symfony\vendor, mais dans le process composer m'a supprimé des packages contenus par défaut dans le dossier vendor.

    Bien entendu ces packages étant supprimés impossible d'avoir une application fonctionnelle (il m'a notamment supprimé monolog...)

    Comment installer le bundle sans qu'il me supprime les packages contenus par défaut dans /vendor ?
    Ne devrais-je pas mettre le composer.json à la racine de mon Bundle ? ( C:\wamp\www\Symfony\src\monbundle\monbundleBundle )
    J'ai tenté avec un composer install et un composer update mais les résultats sont les mêmes.

  7. #7
    Membre expérimenté Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    Non ! Le composer.json doit se trouver à la racine du projet.

    Et tous les vendors (Symfony lui même y compris) vont s'installer dans /vendor.

    Si la racine de ton projet ne s'appelait pas Symfony ça pourrait éviter les confusions aussi.

    Si tout ce qu'il reste dans ton composer.json c'est ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "require": {
        "liuggio/excelbundle": "~2.0"
    }
    alors c'est normal qu'il n'installe rien d'autre sachant qu'avant voilà ce que contenait ton composer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    "require": {
        "php": ">=5.3.3",
        "doctrine/common": "~2.2",
        "twig/twig": "~1.12",
        "psr/log": "~1.0",
        "twitter/bootstrap": "3.2.0",
        "symfony/framework-bundle": "~2.1",
        "phpoffice/phpexcel": "~1.8.0",
        "liuggio/excelbundle": "~2.0",
        "components/jquery": "1.11.1"
    }
    Si tu les retires du fichier composer.json, composer estime que tu n'en as pas besoin pour ton projet et te les désinstalle. Il a du te désinstaller Symfony tout entier par la même occasion.

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Solution trouvée ce matin :

    Mon dossier racine ne contenait pas de .lock ni de .json à l'origine, du coup quand je faisais un install ou update Symfony n'avait pas conscience des packages déjà installés, d'où la suppression des packages non référencés dans le composer.json.

    Du coup j'ai réinstallé Symfony via composer (que j'avais installé par avant en téléchargeant le .rar), le composer.json était bien à la racine cette fois ci. J'y ai ajouté mes dépendances et lancé un update. Pas de problème.

    Merci pour ton aide Nico !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RMI] ClassNotFoundException que je ne comprends tjs pas
    Par Satch dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 10/05/2007, 12h07
  2. [netbeans] pb de classnotfoundexception
    Par cedsan dans le forum JDBC
    Réponses: 6
    Dernier message: 29/07/2005, 18h22
  3. [STRUTS][EJB]ClassNotFoundException
    Par SEMPERE Benjamin dans le forum Struts 1
    Réponses: 11
    Dernier message: 19/07/2005, 23h29
  4. [EJB] ClassNotFoundException au déploiement
    Par rivierem dans le forum Java EE
    Réponses: 2
    Dernier message: 29/06/2004, 09h29
  5. [EJB] ClassNotFoundException au démarrage
    Par loulou dans le forum Java EE
    Réponses: 10
    Dernier message: 21/06/2004, 13h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo