Erro com switch-case no JSP

Fala galera. Tenho esse código abaixo bem simples para uma simples calculadora:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="pt-br">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Calculadora JSP</title>
</head>
<body>
<br /><br />
<fieldset> <legend> Calculadora JSP</legend>
<form action="CalculadoraJSP.jsp" method="post">
<br /><br />
Entre com os valores a serem calculados na Calculadora JSP Java
<br /><br />
<label for="valorA">Digite o primeiro Valor:</label>
<br />
<input type="text" id="valorA" name="valorA" size=50 />
<br /><br />
<label for="valorB">Digite o segundo Valor:</label>
<br />
<input type="text" id="valorB" name="valorB" size=50 />
<br />
<br />

<select name="opcao" id="opcao">
<option value="+">(+)</option>
<option value="-">(-)</option>
<option value="*">(*)</option>
<option value="/">(/)</option>
</select>

<input id="btCalcular" type="submit" value="Calcular"/>
<input id="btLimpar" type="reset" value="Limpar"/>
<br />
<br />
</form></fieldset>
<%!//Declarações
	private double soma (double valorA, double valorB){
	
		double resultado = 0.0;
		return resultado = valorA + valorB;
	
}

	private double subt (double valorA, double valorB){

		double resultado = 0.0;
		return resultado = valorA - valorB;

}

	private double mult (double valorA, double valorB){
	
		double resultado = 0.0;
		return resultado = valorA * valorB;

}

	private double divi (double valorA, double valorB){
	
		double resultado = 0.0;
		return resultado = valorA / valorB;

}
		double dvalorA = 0;
		double dvalorB = 0;
		String opcao;
%>

<%//Scriplet
	String svalorA = request.getParameter("valorA");
	String svalorB = request.getParameter("valorB");
	
	boolean vValidA = svalorA != null  && !svalorA.equals("");
	boolean vValidB = svalorB != null  && !svalorB.equals("");
	
	
	if  (vValidA && vValidB){
	
	 opcao = request.getParameter("opcao");
	 dvalorA = Double.parseDouble(svalorA);
	 dvalorB = Double.parseDouble(svalorB);
	
		switch(opcao) {
			case "+":
				out.println("<br>Resultado: "+soma(dvalorA, dvalorB));
				break;
			case "-":
				out.print("<br>Resultado: "+subt(dvalorA, dvalorB));
				break;
			case "*":
				out.print("<br>Resultado: "+mult(dvalorA, dvalorB));
				break;
			case "/":
				out.print("<br>Resultado: "+divi(dvalorA, dvalorB));
				break;
				}
}
 %>
<br/>
</body>
</html>

E ao compilar no Tomcat 7 (uso java 1.8) ele apresenta esse erro:

Cannot switch on a value of type String for source level below 1.7. Only convertible int values or enum variables are permitted

e esse erro aparece aqui nessa linha:

switch(opcao) {
    			case "+":

Inicio do switch.

Ja li umas coisas sobre mudar build path de 1.7 para 1.8 mas já esta. O que pode ser?
Desde já obrigado.

Clique com o botão direito do mouse no seu projeto, vá para Propriedades. Selecione Java Compiler no menu esquerdo. Selecione seu nível de conformidade (1.7 ou 1.6). 1.7 interromperá essa mensagem. 1.6, como outros disseram antes, não permitirá que você use strings.

Fonte: StackOverFlow - Uso se String nos Case Switch.

Traduz comigo: não pode switch num valor do tipo String para um nível de fonte menor que 1.7

Ou você está usando uma versão muito antiga do jdk ou teu projeto está configurado para uma versão antiga do jdk, pois o suporte a switch em string só foi adicionado na versão 1.7 do java.

Uso essas versões:

C:\>javac -version
javac 1.8.0_121

C:\>java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) Client VM (build 25.161-b12, mixed mode, sharing)

Como verificar se está OK no Eclipse? onde vejo isso? No Build Path?

Obrigado.