public void loadRasPiPlugin(File file) throws PluginException {
		if (file == null)
			throw new PluginException("RasPiPlugin cannot be null!");

		RasPiPlugin RasPiPlugin = null;
		try {
			RasPiPlugin = getRasPiPlugin(file);
		} catch (Exception e) {
			RasPiAPI.getLogger().warning("Failed to load file " + file.getName() + "! " + e.getMessage());
			e.printStackTrace();
			return;
		}

		RasPiPlugin.initialize(RasPiAPI.getRaspberryPi(), this, new PluginLogger(RasPiPlugin));
		StringBuffer sb = new StringBuffer();
		try {
			jarMap.put(RasPiPlugin.getName(), file.toURI().toURL());
		} catch (MalformedURLException e) {
			RasPiAPI.getLogger().warning("failed to load plugin " + RasPiPlugin.getName() + "! " + e.getMessage());
			e.printStackTrace();
			return;
		}
		sb.append("Loading " + RasPiPlugin.getName() + " v" + RasPiPlugin.getVersion());
		if (RasPiPlugin.getAuthor() != null) {
			sb.append(" by " + RasPiPlugin.getAuthor());
		}
		RasPiAPI.getLogger().info(sb.toString());
		pending.add(RasPiPlugin);
	}