2014-05-20 35 views
1

源級別我的JBoss EAP 6.2.2 JDK 7,我的服務器上運行,在我的web應用程序我有一個使用JDK7的鑽石運營商一個jspJboss的JSP問題<>運營商不允許低於1.7

Map<String, String> menuItems = new LinkedHashMap<>(); 

我得到訪問該JSP的錯誤:

org.apache.jasper.JasperException: JBWEB004062: Unable to compile class for JSP: 
JBWEB004060: An error occurred at line: 5 in the jsp file: /WEB-INF/pagecomponents/menu.jsp 
'<>' operator is not allowed for source level below 1.7 

是否有JBoss使用默認的源代碼兼容,如果是有沒有辦法改變它?

+0

是你在Eclipse中看到這個嗎? –

+0

我在某處讀到用於編譯JSP的JBoss 7的默認JDK版本是1.5。假設這是正確的,JBoss 6.2.2不可能比這更高。所以你有可能需要在你的配置中設置一個目標JDK。 – radimpe

+0

@radimpe我看到,通過jboss文檔檢查如何改變它。令人驚訝的是似乎沒有人遇到過這個問題 - 沒有得到谷歌的任何好結果:( – 6ton

回答

2

注意:我已經在EAP 6.1.0上測試了這一點,但相信它應該與6.2.2相同。

JSP編譯下的JBoss EAP 6

如果你看一下架構由網絡子系統執行「:域名:網站:JBoss的1.4」你可以看到,編譯器的默認值是1.5, https://github.com/wildfly/wildfly/blob/master/build/src/main/resources/docs/schema/jboss-as-web_1_4.xsd

<xs:complexType name="jsp-configurationType"> 
     ... 
     <xs:attribute name="scratch-dir" /> 
     <xs:attribute name="source-vm" default="1.5" /> 
     <xs:attribute name="target-vm" default="1.5" /> 

你可以在你的standalone-full.xml中改變它。我的本地副本的樣子:

<subsystem xmlns="urn:jboss:domain:web:1.4" default-virtual-server="default-host" native="false"> 
    <configuration> 
    <jsp-configuration source-vm="1.7" target-vm="1.7"/> 
    ... 

有一種說法,如果你要限制你的scriptlet代碼儘可能多的,所以它也許不如將你的代碼出了JSP

+0

是的,找到了在jboss文檔中的參考:http ://docs.jboss.org/jbossweb/7.0.x/config/jsp.html關於scriptlet - 我意識到這一點,但這是一個例外情況。 – 6ton