Подтвердить что ты не робот

Несовместимая JVM в GGTS (Eclipse) и JAVA 1.8

Возникла некоторая проблема с запуском приложения grails в GGTS (eclipse) из-за перехода на Java 1.8.

Стек начинается с:

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

Я использовал для запуска того же приложения в 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.

Информация об установке My 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
[email protected]/../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
4b9b3361

Ответ 1

Это проблема, связанная с jdk8u40, вернемся к jdku31. Он работает в этой версии. Я сталкиваюсь с той же проблемой как в окнах, так и в среде linux.

Ответ 2

Версия 1.8.0_40 и 1.8.0_45 имеет взломы с помощью grails. Spring не может копировать некорневые методы.

Поскольку начальная публикация обходного пути была разработана.

aclement прокомментировал 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-2.5.0/Library/org.springframework/подпружиненные/банки

Затем я переименую загружаемую банку spring, которая есть, и помещаю символическую ссылку к банке выше. Раньше считалось, что вы можете просто изменить startGrails script, чтобы указать на новую версию, но теперь из-за forking Я нахожу, что вам нужно сделать символическую вещь. Или выбросьте эту банку в эту папку и переименуйте ее в соответствии с ожиданиями grails (переименовать это от springloaded-1.2.2.BUILD-SNAPSHOT.jar до подпружиненный-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%;

Ответ 3

Я обновил мою загруженную банку до версии 1.2.4.BUILD-SNAPSHOT (от 1.2.1), и это решило проблему. (Последняя версия находится в Spring repo)

  • Перейдите в свой локальный каталог Grails lib, чтобы найти загруженную банку. Для меня это было /usr/local/Cellar/grails/2.4.4/libexec/lib/org.springframework/springloaded/jars/
  • удалить существующие 1.2.1 баночки (я удалил файл pom, но не обязательно)
  • загрузите последнюю загруженную банку и поместите в подкаталог 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)

Ответ 5

Шаг 1: Скачайте jar

Шаг 2: поместите его в папку grails: grails-2.4.1/lib/org.springframework/springloaded/jars

должно быть достаточно, перезапустите IDE

Ответ 6

Я запускаю Grails 2.4.3, а также проблемы с переходом с jdk1.8.0_31 на jdk1.8.0_40 и должен был вернуться к jdk1.8.0_31

Loading Grails 2.4.3
...
SEVERE: Problems copying method. Incompatible JVM?
java.lang.reflect.InvocationTargetException
...
Caused by: java.lang.IllegalArgumentException: Can not copy a non-root Method
at java.lang.reflect.Method.copy(Method.java:151)

Ответ 7

Из https://github.com/spring-projects/spring-loaded/issues/98 и работал со мной

wget repo.spring.io/libs-snapshot-local/org/springframework/springloaded/1.2.3.BUILD-SNAPSHOT/springloaded-1.2.3.BUILD-SNAPSHOT.jar -O ~/.gvm/grails/2.4.4/lib/org.springframework/springloaded/jars/springloaded-1.2.1.RELEASE.jar

Ответ 8

Два шага, чтобы заставить его работать

1. Загрузить нижнюю версию JDK: Установите jdk1.8.0_25 из ссылки http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html#jdk-8u25-oth-JPR. Это более низкая версия JDK, поскольку grails не поддерживают более высокую версию. Возможно, вскоре они будут включены в последнюю версию.

2. Настройка переменных среды: Не забудьте изменить переменные Enviromental для jdk, вам нужно просто отредактировать переменные пути и переменную JavaHome от "C:\Program Files\Java\jdk1.8.0_'LatestVersion" до "C:\Program Files\Java\jdk1.8.0_25" .

Ответ 9

Я думал, что должен добавить свою двух достоинства пенсов на эту тему. Недавно я попал в ту же проблему, пытаясь обновить старое приложение до 2.4.4. Причина моего сообщения заключается в том, что все приведенные выше инструкции немного устарели, и в большинстве случаев они могут работать. В тот момент, когда вы вводите драйверы mysql, все вышеперечисленные версии spring загрузили новую проблему вокруг несовместимости и Non-root при попытке запуска базы данных.

Я получил ggts, полностью работающий с JDK 1.8_065. Чтобы заставить его работать, springloaded-1.2.5.RELEASE.jar Поместите это в папку grails-2.4.4/lib/org.springframework/springloaded/jars/. Когда вы устанавливаете ggts внутри папки ggts-bundle, это grails-2.4.4. Поэтому поместите файл в указанную выше папку в папку ggts-bundle. Если вы не изменили конфигурацию.
Перезапустить GGTS Я потратил на это время и подумал, что должен обновить инструкции.

И еще одна вещь, с которой я столкнулась, - это разворачивание под граалом 2.4.4 с моим урастом и в итоге установило

grails.project.fork = []

В моем BuildConfig.groovy

Ответ 10

Изменение версии с пружинной загрузкой в ​​моем pom.xml сделало трюк.

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>springloaded</artifactId>
    <version>1.2.6.RELEASE</version>
</dependency>

Когда я столкнулся с проблемой, моя версия с загрузкой была 1.2.1.RELEASE