当前位置: 首页 > 知识库问答 >
问题:

GGTS(Eclipse)和JAVA 1.8中的JVM不兼容

喻高寒
2023-03-14

由于升级到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

我曾经在1.7Java运行同样的应用,同事升级到1.8,再也无法运行了。

我用SUN JDK进行了测试,现在又用OpenJDK了,这对当前的JDK OpenJDK版本“1.8.0_40”没有帮助

JAVA_HOME,JAVA_PATH和任何其他变量似乎指向正确的JDK安装我已经删除了所有以前的(JDK 1.6

出于某种原因,GGTS仍然抱怨错误的JVM。我知道这个错误可能与编译器1.7试图编译1.8中的文件有关,但是我不确定这个引用是从哪里来的。

我的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

共有3个答案

司寇祖鹤
2023-03-14

我将springloaded jar更新为1.2.4版。BUILD-SNAPSHOT(来自1.2.1)解决了这个问题。(最新版本可在Spring回购协议中找到)

  1. 转到本地的Grails lib目录,找到springloaded jar。对我来说,那是/usr/local/cillar/grails/2.4.4/libexec/lib/org。springframework/springloaded/jars/

完成后,一切正常。(根据之前的答案得出的线索:https://github.com/spring-projects/spring-loaded/issues/98)

上官霄
2023-03-14

这是一个与jdk8u40有关的问题,回到jdku31。它在那个版本中有效。我在windows和linux环境中都遇到了同样的问题。

宇文育
2023-03-14

版本1.8.0_40和1.8.0_45对grails进行了突破性的更新。Spring不能复制非根方法。

自最初发布以来,已经制定了一个解决方案。

aclement在3月5日发表评论,以下是构建:http://repo.spring.io/libs-snapshot-local/org/springframework/springloaded/1.2.2.BUILD-SNAPSHOT/springloaded-1.2.2.BUILD-SNAPSHOT.jar

要在grails下测试它,我要做的是进入grails文件夹:grails-2.5.0/lib/org.springframework/springloaded/jars

然后我重新命名了那个Spring加载的罐子,并在上面的罐子中添加了一个符号链接。以前你可以修改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中原生支持

http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html#jdk-8u25-oth-JPR

一旦有了兼容的java版本,请清理grails项目。确保java路径变量设置为指向预期版本。

set JAVA_HOME=C:\java\jdk1.8.0_25
set PATH=%JAVA_HOME%\bin;%PATH%;
 类似资料:
  • 问题内容: 由于升级到Java 1.8,在GGTS(日食)中运行grails应用程序时遇到了一些问题。 堆栈开始于: 我曾经在Java 1.7中运行相同的应用程序。我的同事升级到1.8,并且不再能够运行它。 我已经使用SUN JDK进行了测试,现在又使用了OpenJDK,这对当前的JDK openjdk版本“ 1.8.0_40”* 没有帮助。 * JAVA_HOME,JAVA_PATH和任何其他变

  • OSX小牛。几周前,我安装了最新的64位eclipse。它运行得很好。几周后,我安装了jenv,我相信从那以后eclipse就不能正常工作了。当然,eclipse和JDK 8都是64位的。为什么会出现错误对话框“不兼容的JVM”,消息是“JVM的1.6.x版本不适合此产品。需要1.7.0或更高版本”。 找到eclipse.ini后,我在eclipse.ini文件中找到了这个。 为什么日食早些时候工

  • 我已经下载了EclipseMat,并尝试在Windows上启动它。 执行显示一个弹出窗口,显示与此消息不兼容的JVM:JVM的1.8.0242版本不适用于此产品。版本:11或更高版本是必需的。 如本文所述,我创建了一个目录,并复制了一个解决问题的OpenJDK 16。 但是我不觉得这个解决方案很优雅。所以我试图在中添加参数,并试图创建一个文件作为文档的引用。它不起作用! 有没有一种方法可以配置JV

  • 我试图在Eclipse和GGTS上编译我的Grails项目,在这两个平台上每次都收到相同的错误: 我已经激活了堆空间查看器,但它从来没有达到我在eclipse.ini和ggts.ini上定义的1GB最大大小(甚至没有达到400M),所以我想问题是我的MAC上的JVM选项应该改变。 我设置的Eclipse和GGTS值: -xx:permsize=1024m java-xx:+printflagsfi

  • 我刚刚下载了Eclipse作为归档文件,并安装了最新的64位Java和64位Java开发工具包15。我得到了这个错误。我在之后安装了JDK 11,并收到了相同的错误。 我怎样才能做到这一点?

  • 我刚刚下载了Eclipse作为归档文件,并安装了最新的64位Java和64位Java开发工具包15。我得到了这个错误。安装JDK 11后,出现相同错误。 我怎样才能做到这一点?