private boolean compile(final File fileToCompile) throws IOException {
		Log.getLogger().log(Level.INFO, "Compiling " + fileToCompile.getAbsolutePath() + "...");

		//Copy our API to plugin dir
		final Path target = Paths.get(this.pluginRootDirectory.getAbsolutePath() + System.getProperty("file.separator")  + "API.jar");
		if(Files.exists(target) == false) {
			Log.getLogger().log(Level.INFO, "Copying API.jar to: " + this.pluginRootDirectory.getAbsolutePath() + "...");
			Path source = Paths.get(System.getProperty("user.dir") + System.getProperty("file.separator") + "API.jar");
			Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);
		} else {
			Log.getLogger().log(Level.INFO, "API.jar allready in place, skipping copying...");
		}
		
		//Handles the compiling
		boolean compilationResult = false;
		File fileRootFolder = Helper.findFolderForFile(fileToCompile);
		JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
		if(compiler != null){
			StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
			Iterable<? extends JavaFileObject> compUnits =  fileManager.getJavaFileObjects(fileToCompile);
			String classpath = this.pluginRootDirectory.getAbsolutePath() + System.getProperty("file.separator") + "API.jar:" + fileRootFolder.getAbsolutePath();
			final Iterable<String> options = Arrays.asList(new String[] { "-cp", classpath});
			compilationResult = compiler.getTask(null, fileManager, null, options, null, compUnits).call();        
		} else {
			Log.getLogger().log(Level.SEVERE, "No javacompiler found on system! ERROR");
		}
		
		return compilationResult;
	}