Plugin Programmation Eclipse: Erreur "Cannot find main class"

Arinocas

M∅nster Hunter
2 Mars 2012
252
11
124
La Voie Lactée
Salut à tous et à toutes !

Je vous avoues être quelque peu perdu concernant la place de ce sujet... J'ai cherché parmi les catégories puis j'ai fini par me dire que celle-là ne serait pas trop mal pour accueillir mon problème.
Donc désoler si je me suis trompé de section :x...

Voila depuis maintenant hier soir, ce matin 9h, et jusqu'à maintenant, je travaillais sur Eclipse (je mets le lien pour les droits d'auteur) afin de concevoir mon tout premier plugin sur CraftBukkit. Étant de nature autodidacte, je me suis dis que je pouvais m'y atteler sans aide, mais je me suis vite rendu compte que non et j'ai donc fini par suivre masse de tutoriels (dont le site du zéro et bukkit.fr). Après m'être entraîné comme il le fallait, j'ai fini par suivre des vidéos de lucidiax (je crois que ça s'écrit comme ça) pour commencer mon plugin. A la fin de sa deuxième vidéo, je me mets dans la tête de faire comme lui: tester mon plugin sur mon serveur... Néanmoins mon test ne fut pas aussi concluant que le siens: mon plugin ne marchait pas ~. . . . . . . .~~~~ bref après maintes larmes j'ai fini par aller voir ma console et là, je lis le message d'erreur suivant:

Code:
[Server thread/ERROR]: Could not load 'plugins/testalderia.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: Cannot find main class 'fr.aracneon.testalderia'
etc...

Bref, en configurateur habitué j'en ai vite déduis que l'erreur se trouvait au niveau du "Cannot find main class 'fr.aracneon.testalderia'". J'ai donc essayé des tas de trucs: renommer mon fichier "class" en main (alors que d'après bukkit.fr il fallait le renommer en le nom du plugin soit "testalderia"), supprimer et refaire tout le fichier en faisant attention à toutes les fautes possibles par rapport au tuto de lucidiax (c'est bête: y'en avait pas...), etc...
ça va faire plus de 2h maintenant que je cogite, puis à bout, j'en suis venu à vous demander de l'aide comme j'en avait l'habitude d'antan ^^.

Voici mon fichier "testalderia.java" (oui j'ai fini par lui remettre son nom d'origine):

Code:
package fr.aracneon.testalderia;
 
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.EntityType;
import org.bukkit.plugin.java.JavaPlugin;
 
public class testalderia extends JavaPlugin{
    public void onEnable(){
        getLogger().info("Plugin démarré !");
    }
   
    public void onDisable(){   
        getLogger().info("Plugin éteint !");
    }
   
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
       
        Player player = (Player) sender;
       
        if(sender instanceof Player) {
           
            if(label.equalsIgnoreCase("soleil")){
                if(player.getWorld().isThundering()){
                    player.getWorld().setThundering(false);
                } else {
                    player.sendMessage("Il fait déjà beau");
                }
            }   
           
            else if(label.equalsIgnoreCase("pluie")){
                if(player.getWorld().isThundering()){
                    player.sendMessage("Il pleut déjà");
                } else {
                    player.getWorld().setThundering(true);
                }
               
                if(label.equalsIgnoreCase("jour")){
                    if(player.getWorld().isThundering()){
                        player.getWorld().getTime(0);
                    } else {
                        player.sendMessage("Il fait déjà jour");
                    }
                }   
               
                else if(label.equalsIgnoreCase("nuit")){
                    if(player.getWorld().isThundering()){
                        player.sendMessage("Il fait déjà nuit");
                    } else {
                        player.getWorld().setTime(13500);
                    }
                }
               
                else if(label.equalsIgnoreCase("creeper")){
                   
                    Location lp = player.getLocation();
                    Location location =  new Location(lp.getWorld() + 5, lp.getX(), lp.getY(), lp.getZ());
                   
                    player.getWorld().spawnEntity(location, EntityType.CREEPER);
                }
                else if(label.equalsIgnoreCase("boom")){
                   
                    Location lp = player.getLocation();
                    Location location =  new Location(lp.getWorld() + 5, lp.getX(), lp.getY(), lp.getZ());
                   
                    player.getWorld().createExplosion(Location, 4);
                }
                   
                       
            }
           
        } else {
            sender.sendMessage("Alderia: Tu dois etre un joueur");
        }
       
       
       
        return false;
       
    }
}


Voici mon fichier "plugin.yml":

Code:
name: testalderia
main: fr.aracneon.testalderia
version: 1.0
description: test
author: Aracneon
commands:
  soleil:
    description: Fait le beau temps
    permission: testalderia.soleil
    aliases:
    - so
  pluie:
    descritpion: Fait la pluie
    permission: testalderia.pluie
    aliases:
    - plu
  jour:
    description: Fait le jour
    permission: testalderia.jour
    aliases:
    - jo  
  nuit:
    description: Fait la nuit
    permission: testalderia.nuit
    aliases:
    - nt 
  creeper:
    description: Fait spawner un creeper
    permission: testalderia.creeper
    aliases:
    - cre
    - cree            
  boom:
    description: BOOM
    permission: testalderia.boom
    aliases:
    - b

Sinon pour ce qui est de l'anglais (même si je ne rentre bientôt qu'en 3ème) ou de la littérature, j'ai rien contre: donc si vous avez des liens intéressants je prends ^^.

Merci d'avance :p !!!

Aracneon
 

robin4002

Expert en informatique et systèmes d'information
Staff
Responsable technique
Responsable forum
12 Novembre 2012
20 891
158
3 004
347
26
Alsace
www.minecraftforgefrance.fr
Salut,
Je ne programme pas de plugins, en revanche je fais des mods, j'ai donc d'assez bonne connaissance en java.
Cannot find main class 'fr.aracneon.testalderia'
veux dire qu'il ne trouve pas la classe fr.aracneon.testalderia, et en effet, ceci est le nom du package et non celui de la classe.
Tu devrais plutôt mettre :
fr.aracneon.testalderia.testalderia

En passant, par convention on met une majuscule au nom des classes, donc ta classe devrait plutôt s’appeler Testalderia et dans ton plugins.yml tu devrais avoir : fr.aracneon.testalderia.Testalderia