Probleme mit Java + Tomcat | Cannot switch on a value of type String for source level below 1.7

Gimlie

Mitglied
Hallo,
ich hoffe ich bin mit meinem Anliegen im richtigen Bereich.
Ich habe ein Problem welches mich verzweifeln lässt und wobei mir die Forumsuche und Google leider nicht weiter geholfen haben.

System:
- Java 8
- Eclipse Luna
- Tomcat 7
- JAVA_HOME zeigt auf Java 8

In einer JSP habe ich einen "switch-case" mit "String-Variablen". Beim Aufruf der Seite erscheint folgender Fehler:
Code:
org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 62 in the jsp file: /Main.jsp
Cannot switch on a value of type String for source level below 1.7. Only convertible int values or enum variables are permitted
59: 							else
60: 							{
61: 								Contact[] contact = null;
62: 								switch(session.getAttribute("maintyp").toString())
63: 								{
64: 									case "contactgroup":
65: 									{


Stacktrace:
	org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103)
	org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:366)
	org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:476)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:657)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	controler.Controler.doPost(Controler.java:215)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

Alle Systeme nutzen aus meiner Sicht und nach Prüfung der Einstellungen Java 8. Compilen auf Java 6 oder 7 und dann zurück haben nichts gebracht. Habe den Fehler auf zwei Systemen.
Irgendwas ist falsch, ich weiß aber nicht was. Ich hoffe ihr könnt mir helfen!
 

Gimlie

Mitglied
Hallo JavaMeister,
ich habe über 2 Stunden Google Recherche hinter mir.
Ich nutze Java 8, Eclipse schmeißt keinen Fehler. Tomcat bezieht, laut meinen Infos, die Java Version auf der JAVA_HOME, die steht auch auf Java 8.
Genau aus dem Grund habe ich mich an die User hier im Forum gewandt.
 

gp

Aktives Mitglied
Die Fehlermeldung sagt, dass du kein Java 8 verwendest - deshalb wird swich auch nicht mit Strings zurecht kommen. Und da du nicht verräts, wie der Tomcat gestartet wird und/oder konfiguriert wird, kann ich dir nur raten, in dieser Richtung zu suchen.
 

Gimlie

Mitglied
Hallo gp,
danke für deine Hinweise. Was der Fehler besagt ist mir bewusst, ich denke auch, dass die Lösung total banal ist, aber ich sie trotzdem nicht finde.
Aber erstmal mehr Infos:
Der Tomcat wird aus Eclipse raus gestartet.
Das Java Projekt ist ein Java 8 Projekt:
Anhang anzeigen 6779

Tomcat ist wie gesagt über Eclipse mit folgenden Einstellungen eingebunden:
tomcat version.PNG

Da ich gelesen habe, dass Tomcat die Java Version gerne auch anhand der JAVA_HOME Variable aussucht, habe ich diese wie folgt konfiguriert:
JAVA_HOME.PNG

Ich hoffe die Infos helfen weiter. Bitte gebt mir auch bescheid, was ihr ggf. noch braucht.

Vielen Dank!
 

gp

Aktives Mitglied
Mit Eclipse arbeite ich nicht und starte meinen Tomcat auch immer ohne Entwicklungsumgebung.
Im Standardfall hat der Tomcat eine Management-Webanwendung, z.B. unter http://127.0.0.1:8080/manager/html zu erreichen. Dort sieht man, welches Java verwendet wird.
Ich vermute aber mal, dass die Lösung zur web.xml führt (unter ..\tomcat\conf\ zu finden). Dort kann der jsp-Compiler definiet werden (compilerSourceVM und compilerTargetVM), der steht im Standardfall auf 1.6 - das könnte die Erklärung sein.
 

gp

Aktives Mitglied
Das ändert aber nichts an den Compiler-Einstellungen in der web.inf

Warum nutzt Tomcat auch in der Version 8 ein altes Java? Das hängt damit zusammen, dass eine Webanwendung auch auf fremden Systemen laufen soll. Es kann dann nicht sichergestell werden, dass z.B. ein Java 8 läuft. Daher sollten SP-Dateien auf solche Konstrukte verzichte. Mit IF-Abfragen sollte man auch zum Ergebnis kommen. Davon abgesehen, dass man Java-Code in JSP-Dateien vermeiden sollte.

Davon aber abgesehen - trage die beiden Schalter in die web.xml ein (notfalls in die deiner Anwendung) und die Datei sollte sich übersetzen lassen.
 
Zuletzt bearbeitet:

Gimlie

Mitglied
Hallo gp,
besten Dank! Genau an den Einstellungen hat es gehakt.
Folgenden Code muss man über Eclipse beim Server in die web.xml eintragen:
Code:
		<init-param>                               
     		<param-name>compilerSourceVM</param-name>
      		<param-value>1.8</param-value>
 		</init-param>
  		<init-param>
     		<param-name>compilerTargetVM</param-name>
      		<param-value>1.8</param-value>
  		</init-param>

Direkt über:
Code:
<load-on-startup>3</load-on-startup>

Damit hat es bei mir super funktioniert!

Danke auch für deinen "Architektur-Hinweis": Das Projekt ist fürs Studium, wo wir bestimmte Vorraussetzungen definieren konnten, daher brauchen wir uns in dem Zuge um eine Abwärtskompatibilität keine Gedanken zu machen.
Der Java-Code in den JSPs ist bereits so minimal gehalten wie möglich, die Haupt-Logik liegt in den Servlets. Aber wir schauen mal, ob wir das nicht noch weiter optimieren können.

Danke!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Probleme mit EclipseLink und Java.util.Date Web Tier 3
H Probleme beim Aufrufen von Java- oder Servlet-Methoden aus Javascript Web Tier 2
pkm Probleme mit einem AJAX-Call in einem dynamischen Webprojekt Web Tier 15
M JSF Probleme bei Navigation mit Verzeichnisswechsel Web Tier 2
W JSF Probleme mit Data Table Web Tier 8
W JSF Probleme mit Zugriff zur Managed Bean Web Tier 11
F JSF Probleme mit OverlayPanel Web Tier 0
H Frameset durch Tabelle ersetzten - Probleme mit jsp:include Web Tier 3
xehpuk JSF URL-Encoding-Probleme bei <h:link> (Mojarra) Web Tier 4
M ejb @Remote macht probleme Web Tier 10
S JSF SelectOneMenu - Probleme mit AJAX Web Tier 6
W Probleme mit Expression language ? Web Tier 13
P JSF Datenbank Probleme (Limit, Wiederholung) Web Tier 8
J JSF JavaScript Probleme zwischen Tomahawk und Tiles!? Web Tier 2
B Probleme mit h:selectOneRadio Web Tier 2
T DWR - Probleme mit Konfiguration Web Tier 13
W JSF MyFaces Tomahawk Probleme Web Tier 4
S JSF Probleme beim redirect im ExceptionHandler Web Tier 2
P JSF 1.2 Navigation probleme Web Tier 2
D Probleme beim installieren von WebBeans Web Tier 2
D Probleme mit Tomcat Web Tier 3
M Tomcat 6 Umlaut Probleme Web Tier 2
D Seam Example Probleme Web Tier 2
C Probleme mit JSPs in Unterverzeichnissen Web Tier 4
A [PrimeFaces] dataTable mit paginator Probleme Web Tier 2
0 JSF: css einbinden - Probleme Web Tier 2
M iframe probleme Web Tier 2
K [GWT] Probleme beim asynchronen Methodenaufruf mit GWT-RPC Web Tier 8
B Probleme mit RichFaces Web Tier 2
O struts2 - Probleme mit parametrisierten URLs Web Tier 5
E Probleme mit GWT & MySQL Web Tier 3
G Probleme mit Ajax Login (jsp) Web Tier 5
S Tomcat / Eclipse Probleme Web Tier 2
B Probleme mit <jsp:include page=""/> und Laufzeit Web Tier 7
P Zurück-Button des Browsers macht Probleme Web Tier 9
O Struts2: Probleme mit Links aus Packages raus Web Tier 9
A JSF+Glassfish: Probleme mit Managed Bean Web Tier 2
S Probleme mit den Nav_rules und HTML code Web Tier 2
D Probleme mit ServletRequest Web Tier 14
G Probleme mit Tomcat Web Tier 14
E RichFaces 3.2.1 Probleme Web Tier 4
W JSTL macht Probleme Web Tier 6
W JavaBeans class="" macht Probleme Web Tier 2
A Time-Out Probleme Web Tier 21
B Probleme mit Marquee Tag Web Tier 3
LimDul Komplexe Generierung von Java-Klassen aus WSDL Web Tier 1
E Java Servlet doPost request, Mehrere Parameter mit demselben Namen aus Tabellenzeilen Web Tier 2
platofan23 Java Login Überprüfung ohne Srciptlets in der JSP Web Tier 4
Dimax JSP Progress Bar in JSP nur mit Java Web Tier 4
S Einträge aus Datenbank einzeln darstellen (JSP, JAVA, HTML) Web Tier 9
R JavaScript für Java Enterprise Entwickler Web Tier 1
O JSF Java Unsigned Applet PrivilegedActionException Problem Web Tier 2
S JSP Hm... Vorlage für Java Basierende Webseite? Web Tier 0
S Button klick soll Java methode aufrufen Web Tier 2
R Tomcat - java.lang.OutOfMemoryError: PermGen space Web Tier 0
F JSP jSP Datei mit normalem Java Programm auslesen? Web Tier 5
T Spark Java Web Framework Web Tier 0
S java.lang.ExceptionInInitializerError: Wieso??? Web Tier 3
N JSP Free Webhoster Java Backend? PHP? Web Tier 1
D Java EE Servlet login Problem Web Tier 1
L Servlet Java Entschlüsselungsprogramm in Webapplikation einbinden Web Tier 0
Streeber java.lang.NoClassDefFoundError: org/sqlite/NativeDB Web Tier 0
M GWT - Externe Java Libs auf Server Seite - zB. JDBC Web Tier 6
S Java Bean und Java Servlet Web Tier 2
L java.io.NotSerializableException für domain Objekte - Design Problem? Web Tier 12
H MVC in Java pur / Controller als Instanz? / Theorie! Web Tier 4
T Einsteigerfragen zu Servlets/Webprogrammierung mit Java Web Tier 11
J Übergabe von Parameter aus JSP an Java Web Tier 2
nrg Java-Code in Taglib wird nicht richtig ausgeführt. Web Tier 7
D JSF Überprüfen der Session ID in JSF und JAVA Web Tier 9
H JSP, Eclipse, Tomcat - Java Klasse wird nicht gefunden Web Tier 8
B JSF Mojarra 2.1.5: java.lang.IllegalStateException: Cannot create a session after the response has been Web Tier 7
A Parameterübergabe an Servlet und Aufruf von Servlets per Java Code Web Tier 7
J JSF Java Beans Konventionen Web Tier 2
P Blog in Java/JSP Web Tier 5
S Per JavaScript Java ansteuern - Welche Technik? Web Tier 2
T Seam-Komponenten oder Java Bean soll direkt nach Appserver-Start "leben" Web Tier 4
B Thread start bei Java Web Anwendung Web Tier 6
M Suche Java Framework Web Tier 2
B Tomcat 6 ergibt Fehler - java.net.SocketException Web Tier 2
ruutaiokwu js kalendar, der mit java.text.SimpleDateFormat kombatibel ist... Web Tier 4
B Java EE 6 Problem (EL) Web Tier 4
F Migration eines CMS von PHP nach JAVA Web Tier 3
R GWT 2.1.1 mit Java 1.6 statt 1.5 Web Tier 8
W JSP - Attribut-Werte aus JAVA-Klasse ? Web Tier 8
T Werte aus java Klasse in jsp nutzen Web Tier 5
N java.lang.NoClassDefFoundError: org/jdom/JDOMException Web Tier 3
M JSP Ausgabe von Java-Objekten Web Tier 7
D JSP, Java Applets einbinden Web Tier 2
LadyMilka java.lang.NumberFormatException: For input string: ... Web Tier 5
K Bilder in Java-Webapplikationen Web Tier 12
S Java Servlet Content Type Web Tier 3
K Analye einer Seite (Java, JSP, ...) Web Tier 12
J rich:modalpanel vom java-code aus öffnen und schliessen Web Tier 2
S Expression Language in Java Web Tier 13
A Ssh connection mit java jsch? Web Tier 2
W Java code aus JSP-File durch JSTL code ersetzen Web Tier 8
M Body onUnload Java Methode aufrufen Web Tier 13
F Frage zu Java Beans Web Tier 17
M Java Framework für größere Projekte verwenden Web Tier 5

Ähnliche Java Themen

Neue Themen


Oben