Al-*_*unk 40 java eclipse ggts
由于升级到Java 1.8而在GGTS(eclipse)中运行grails应用程序时遇到一些问题.
堆栈以:
Mar 05, 2015 3:51:31 PM org.springsource.loaded.jvm.JVM copyMethod
SEVERE: Problems copying method. Incompatible JVM?
java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedMethodAccessor91.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springsource.loaded.jvm.JVM.copyMethod(JVM.java:134)
at org.springsource.loaded.ri.OriginalClassInvoker.createJavaMethod(OriginalClassInvoker.java:68)
at org.springsource.loaded.ri.ReflectiveInterceptor.jlClassGetDeclaredMethods(ReflectiveInterceptor.java:151)
at org.codehaus.groovy.reflection.CachedClass$3$1.run(CachedClass.java:84)
at java.security.AccessController.doPrivileged(Native Method)
at org.codehaus.groovy.reflection.CachedClass$3.initValue(CachedClass.java:81)
...
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1270)
at org.codehaus.groovy.grails.cli.support.GrailsStarter.rootLoader(GrailsStarter.java:236)
at org.codehaus.groovy.grails.cli.support.GrailsStarter.main(GrailsStarter.java:264)
Caused by: java.lang.IllegalArgumentException: Can not copy a non-root Method
at java.lang.reflect.Method.copy(Method.java:151)
... 280 more
Run Code Online (Sandbox Code Playgroud)
我曾经在Java 1.7中运行相同的应用程序.我的同事升级到1.8,不再能够运行它.
我使用SUN JDK进行了测试,现在我再次使用OpenJDK,这对当前JDK openjdk版本"1.8.0_40"没有帮助
JAVA_HOME,JAVA_PATH和任何其他变量似乎都指向正确的JDK安装.我已经删除了所有以前的(从操作系统JDK 1.6和1.7,以确保没有引用它们).
出于某种原因,GGTS仍然抱怨错误的JVM.我理解错误可能与编译器1.7尝试编译1.8中的文件有关,但我不确定这个引用在eclipse中的来源.
我的Eclipse安装信息在Java下列出了以下内容:
-vm
/usr/lib64/jvm/jre-1.8.0-openjdk/bin/java
eclipse.home.location=file:/home/arb/dev/applications/ggts-3.6.3.SR1/
eclipse.launcher=/home/arb/dev/applications/ggts-3.6.3.SR1/GGTS
eclipse.launcher.name=GGTS
eclipse.p2.data.area=@config.dir/../p2
eclipse.p2.profile=DefaultProfile
eclipse.product=org.springsource.ggts.ide
eclipse.startTime=1425566898624
eclipse.stateSaveDelayInterval=30000
eclipse.vm=/usr/lib64/jvm/jre-1.8.0-openjdk/bin/java
eclipse.vmargs=-Dgrails.console.enable.interactive=false
-Dgrails.console.enable.terminal=false
-Djline.terminal=jline.UnsupportedTerminal
-Dgrails.console.class=grails.build.logging.GrailsEclipseConsole
-Dosgi.requiredJavaVersion=1.6
-Xms60m
-Xmx1024m
Run Code Online (Sandbox Code Playgroud)
pen*_*uin 23
版本1.8.0_40和1.8.0_45使用grails进行了更新.Spring无法复制非Root方法.
自最初发布以来,已经开发了一种解决方法.
aclement在3月5日发表评论这是构建:http://repo.spring.io/libs-snapshot-local/org/springframework/springloaded/1.2.2.BUILD-SNAPSHOT/springloaded-1.2.2.BUILD-SNAPSHOT .罐
要在grails下测试它,我做的是进入grails文件夹:grails-2.5.0/lib/org.springframework/springloaded/jars
然后我重命名那里的弹簧加载的jar并将符号链接放到上面的jar中.过去,您可以修改startGrails脚本以指向新版本,但现在由于分叉,我发现您需要执行符号链接.或者将该jar放入此文件夹并重命名以匹配grails的期望(将其从springloaded-1.2.2.BUILD-SNAPSHOT.jar重命名为springloaded-1.2.0.RELEASE.jar)
如果你想要回滚
Grails原生支持1.8.0_25,1.8.0_31
一旦你有一个兼容的Java版本清理你的grails项目.确保将java路径变量设置为指向预期版本.
set JAVA_HOME=C:\java\jdk1.8.0_25
set PATH=%JAVA_HOME%\bin;%PATH%;
Run Code Online (Sandbox Code Playgroud)
dus*_*ine 19
我将我的springloaded jar更新到版本1.2.4.BUILD-SNAPSHOT(从1.2.1开始)并解决了这个问题.(最新版本可在Spring回购中找到)
/usr/local/Cellar/grails/2.4.4/libexec/lib/org.springframework/springloaded/jars/
jars
子目录:
wget http://repo.spring.io/libs-snapshot-local/org/springframework/springloaded/1.2.4.BUILD-SNAPSHOT/springloaded-1.2.4.BUILD-SNAPSHOT.jar
完成后,一切正常.(以前回答中使用的线索:https://github.com/spring-projects/spring-loaded/issues/98)
归档时间: |
|
查看次数: |
24268 次 |
最近记录: |