plugin generated unexpected output during activation, but it is empty

You may have empty characters at the beginning before the <?php block.

You may also try to var_dump($result->get_error_data()) this error message — this would be the dirty way.

File: wp-admin/plugins.php
42:             $result = activate_plugin($plugin, self_admin_url('plugins.php?error=true&plugin=' . $plugin), is_network_admin() );
43:             if ( is_wp_error( $result ) ) {
44:                 if ( 'unexpected_output' == $result->get_error_code() ) {
45:                     $redirect = self_admin_url('plugins.php?error=true&charsout=" . strlen($result->get_error_data()) . "&plugin=' . $plugin . "&plugin_status=$status&paged=$page&s=$s");
46:                     wp_redirect(add_query_arg('_error_nonce', wp_create_nonce('plugin-activation-error_' . $plugin), $redirect));
47:                     exit;
48:                 } else {
49:                     wp_die($result);
50:                 }
51:             }