James Anderson out for six weeks due to shoulder problem