Grails Java 8开发模式支持



由于Java 7现在不再公开维护,Grails 2.4.X对Java 8的支持在重新加载时,在开发模式下是微不足道的(它崩溃了)我想知道在我迁移之前,是否有人在Java 8开发模式Grails 2.5或Grails 3方面运气更好?

理论上,很多东西都是通过迁移到较新的Spring Boot(即grails 3)来升级的。

我的错误:

found a projection 312
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x000000010e4eee40, pid=95784, tid=20739
#
# JRE version: Java(TM) SE Runtime Environment (8.0_45-b14) (build 1.8.0_45-b14)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.45-b02 mixed mode bsd-amd64 compressed oops)
# Problematic frame:
# V  [libjvm.dylib+0xeee40]
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /Users/nathandunn/repositories/Apollo/hs_err_pid95784.log
[thread 36867 also had an error]

从日志文件:

Internal exceptions (10 events):
Event: 40.212 Thread 0x00007f8690d2b800 Exception <a 'java/lang/ClassNotFoundException': org/bbop/apollo/ProjectionService$_$tt__loadTrackJson_closure25BeanInfo> (0
x00000007a09ab690) thrown at [/Users/java_re/workspace/8-2-build-macosx-x86_64/jdk8u45/3457/hotspot/src/share/vm/classfile/systemDi
Event: 40.212 Thread 0x00007f8690d2b800 Exception <a 'java/lang/ClassNotFoundException': org/bbop/apollo/ProjectionService$_$tt__loadTrackJson_closure25Customizer> 
(0x00000007a0a3a9b0) thrown at [/Users/java_re/workspace/8-2-build-macosx-x86_64/jdk8u45/3457/hotspot/src/share/vm/classfile/system
Event: 40.227 Thread 0x00007f8690d2b800 Exception <a 'java/lang/ClassNotFoundException': org/bbop/apollo/projection/ProjectionSequence$_toJSONObject_closure1BeanInf
o> (0x00000007a0e2e020) thrown at [/Users/java_re/workspace/8-2-build-macosx-x86_64/jdk8u45/3457/hotspot/src/share/vm/classfile/sys
Event: 40.228 Thread 0x00007f8690d2b800 Exception <a 'java/lang/ClassNotFoundException': org/bbop/apollo/projection/ProjectionSequence$_toJSONObject_closure1Customi
zer> (0x00000007a0ec5290) thrown at [/Users/java_re/workspace/8-2-build-macosx-x86_64/jdk8u45/3457/hotspot/src/share/vm/classfile/s
Event: 40.232 Thread 0x00007f8690d2b800 Exception <a 'java/lang/ClassNotFoundException': org/bbop/apollo/ProjectionService$_createExonLocations_closure9BeanInfo> (0
x00000007a1048ae0) thrown at [/Users/java_re/workspace/8-2-build-macosx-x86_64/jdk8u45/3457/hotspot/src/share/vm/classfile/systemDi
Event: 40.233 Thread 0x00007f8690d2b800 Exception <a 'java/lang/ClassNotFoundException': org/bbop/apollo/ProjectionService$_createExonLocations_closure9Customizer> 
(0x00000007a10d7a40) thrown at [/Users/java_re/workspace/8-2-build-macosx-x86_64/jdk8u45/3457/hotspot/src/share/vm/classfile/system
Event: 40.237 Thread 0x00007f8690d2b800 Exception <a 'java/lang/ClassNotFoundException': org/bbop/apollo/ProjectionService$_extractHighLevelLocations_closure12BeanI
nfo> (0x00000007a1253d28) thrown at [/Users/java_re/workspace/8-2-build-macosx-x86_64/jdk8u45/3457/hotspot/src/share/vm/classfile/s
Event: 40.238 Thread 0x00007f8690d2b800 Exception <a 'java/lang/ClassNotFoundException': org/bbop/apollo/ProjectionService$_extractHighLevelLocations_closure12Custo
mizer> (0x00000007a12edd70) thrown at [/Users/java_re/workspace/8-2-build-macosx-x86_64/jdk8u45/3457/hotspot/src/share/vm/classfile
Event: 40.243 Thread 0x00007f8690d2b800 Exception <a 'java/lang/ClassNotFoundException': org/bbop/apollo/ProjectionService$_extractExonArrayLocations_closure13BeanI
nfo> (0x00000007a148f458) thrown at [/Users/java_re/workspace/8-2-build-macosx-x86_64/jdk8u45/3457/hotspot/src/share/vm/classfile/s
Event: 40.244 Thread 0x00007f8690d2b800 Exception <a 'java/lang/ClassNotFoundException': org/bbop/apollo/ProjectionService$_extractExonArrayLocations_closure13Custo
mizer> (0x00000007a152a408) thrown at [/Users/java_re/workspace/8-2-build-macosx-x86_64/jdk8u45/3457/hotspot/src/share/vm/classfile

我的建议很简单,简单明了:迁移(或真正升级),不要回头看。

原因我们在2014年10月用Grails 2.3和JDK7启动了一个GG项目,并一直发展到2.5.1和Java 8。然后,当我们停滞不前的时候,我们开始看到Grails 3和Gradle在我们脚下发生了变化。圣杯3.1,.2,.3,.4,.5…当我们站在玻璃后面看的时候。当Grails 2上的水流越来越稀、越来越干时,烟囱溢流充满了新的功能和问题。它很疼,我想你现在一定在经历这一切。

如何你最大的(如果不是也是唯一的)问题是你在BuildConfig文件中得到了什么——插件。在这个不错的升级页面中,除了BuildConfig.groovybuild.gradle步骤之外,几乎所有其他内容都可以盲目遵循。例如,处理spring安全性和web服务的插件必须更改,如果您在视图中嵌入了ajax组件(如submitToRemote和remoteFunction),那么您需要考虑在纯jQuery和ajax调用中重建所有这些组件,或者只需为所有此类组件添加ajax插件即可正常工作。

台阶

  1. 稍微了解一下Gradle,并在很大程度上依赖sdkman
  2. 用于IDE的IntelliJ 15
  3. 创建Grails 3项目
  4. 如果spring-security是您的插件之一,请不要复制旧项目中的代码,使用quickstart在本地合并插件机制
  5. 对于较旧的ajax UI组件,您可以在build.gradle中添加以下行,所有组件都应该按原样工作,尽管GG团队建议不要这样做。compile 'org.grails.plugins:ajax-tags:1.0.0.RC1'
  6. 是否使用Web服务?按照这篇文章中的步骤,看看你应该如何制作插件包含以及使用服务
  7. 是的,现在按照上面提到的升级页面中的步骤进行操作,但是留意每一个插件。支持的在本页中

其他重要步骤?添加为评论或直接添加到此列表中,使G2的任务变得越来越容易。我会继续编辑这个。

最新更新