flush_rewrite_rules() not working on plugin activation

Your string is not read as a callback. You should pass an array:

$pcpt = new Project_Custom_Post_Type;
register_activation_hook( __FILE__, array( $pcpt, 'activate' ) );

Note that init happens before plugin activation, so not callbacks from your class will be executed.