2013-01-24 9 views
17

Czy ktoś miał szczęście uruchamiając aplikację Grails 1.3.7 z Javą 7? Stworzyłem całkiem nową aplikację Grails 1.3.7 i wypróbowałem jej działanie w Javie 7. Dostaję poniższy błąd, ale wygląda na to, że działa poprawnie. Mamy kilka aplikacji 1.3.7, których nie chcemy aktualizować do Grails 2.x, więc wszelkie pomysły będą mile widziane.Grails 1.3.7/Java 7 Kompatybilność

Unable to use direct char[] access of java.lang.String 
java.lang.NoSuchFieldException: count 
    at java.lang.Class.getDeclaredField(Class.java:1899) 
    at org.codehaus.groovy.grails.web.util.StringCharArrayAccessor.<clinit>(StringCharArrayAccessor.java:53) 
    at org.codehaus.groovy.grails.web.util.StreamCharBuffer.readAsString(StreamCharBuffer.java:531) 
    at org.codehaus.groovy.grails.web.util.StreamCharBuffer.toString(StreamCharBuffer.java:552) 
    at org.codehaus.groovy.grails.web.pages.FastStringWriter.getValue(FastStringWriter.java:59) 
    at org.codehaus.groovy.grails.web.pages.FastStringWriter.toString(FastStringWriter.java:55) 
    at org.codehaus.groovy.grails.web.pages.GroovyPageParser.startTag(GroovyPageParser.java:1119) 
    at org.codehaus.groovy.grails.web.pages.GroovyPageParser.page(GroovyPageParser.java:801) 
    at org.codehaus.groovy.grails.web.pages.GroovyPageParser.generateGsp(GroovyPageParser.java:380) 
    at org.codehaus.groovy.grails.web.pages.GroovyPageParser.parse(GroovyPageParser.java:326) 
    at org.codehaus.groovy.grails.web.pages.GroovyPagesTemplateEngine.buildPageMetaInfo(GroovyPagesTemplateEngine.java:584) 
    at org.codehaus.groovy.grails.web.pages.GroovyPagesTemplateEngine.createTemplate(GroovyPagesTemplateEngine.java:493) 
    at org.codehaus.groovy.grails.web.pages.GroovyPagesTemplateEngine.createTemplateWithResource(GroovyPagesTemplateEngine.java:473) 
    at org.codehaus.groovy.grails.web.pages.GroovyPagesTemplateEngine.createTemplate(GroovyPagesTemplateEngine.java:246) 
    at org.codehaus.groovy.grails.web.pages.GroovyPagesTemplateEngine.createTemplateForUri(GroovyPagesTemplateEngine.java:373) 
    at org.codehaus.groovy.grails.web.pages.GroovyPagesTemplateEngine.createTemplateForUri(GroovyPagesTemplateEngine.java:345) 
    at org.codehaus.groovy.grails.web.pages.GroovyPagesTemplateEngine.createTemplate(GroovyPagesTemplateEngine.java:262) 
    at org.codehaus.groovy.grails.web.servlet.view.GroovyPageView.renderWithTemplateEngine(GroovyPageView.java:146) 
    at org.codehaus.groovy.grails.web.servlet.view.GroovyPageView.renderMergedOutputModel(GroovyPageView.java:81) 
    at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250) 
    at org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.renderViewForUrlMappingInfo(UrlMappingsFilter.java:260) 
    at org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.doFilterInternal(UrlMappingsFilter.java:189) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.obtainContent(GrailsPageFilter.java:245) 
    at org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.doFilter(GrailsPageFilter.java:134) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.codehaus.groovy.grails.web.servlet.filter.GrailsReloadServletFilter.doFilterInternal(GrailsReloadServletFilter.java:104) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:69) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.codehaus.groovy.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:69) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) 
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) 
    at java.lang.Thread.run(Thread.java:722) 

Odpowiedz

9

To irytujące, ale bezpiecznie zignorować, a ustalone w pkt 2.1.1 i 2.2 - patrz https://github.com/grails/grails-core/issues/2359 szczegóły.

+0

Trochę związane - nadal mam problemy z Grails 2.2 i JDK 1.7, gdy używam maven do zbudowania projektu. Proszę zobaczyć moje pytanie na: http://stackoverflow.com/questions/15037082/maven-build-for-grails-2-2-0-app-fails-with-jdk-1-7-could-not-find- artefact-com –

2

Z tego co widzę in the source code, można ustawić właściwość JVM stringchararrayaccessor.disabled do prawdziwej.

+0

Działa to z grails 1.3.6 i java7. Wydaje się, że zamiar tej klasy jest związany z wydajnością, więc pozostaje widoczny, jeśli zauważalny jest wpływ. – Joseph

+0

Jak ustawić tę właściwość? – Danijel

+0

Jakakolwiek wypróbowana składnia nie działa, na przykład '-Dstringchararrayaccessor.disabled = true'. Dowolny pomysł? – Danijel

14

Ustaw właściwość systemu JAVA_OPTS:
Okna SET JAVA_OPTS=-Dstringchararrayaccessor.disabled=true
Unix: export JAVA_OPTS=-Dstringchararrayaccessor.disabled=true

+0

To działało dla nas dla aplikacji Grails 1.3.7 na Java 7 – Christian

+0

czy chcesz ustawić zmienną środowiskową? – eeadev

1

Fix dla ludzi obserwujących ten sam problem przy uruchamianiu CollabNet Subversion krawędzi 4.x Server

Zgadnij właściwe miejsce, aby dodać JAVA_OPTS = -Dstringchararrayaccessor.disabled = true, nie był skryptem startowym csvn, ale raczej konfekcją opakowania tanukisoft.

Aka, edycja $ csvn_home/data/conf/csvn-wrapper.conf i dodać,

wrapper.java.additional.x = -Dstringchararrayaccessor.disabled = true

(gdzie x jest nieużywany w następnej kolejności)