2015-03-05 2 views
34

Имеет некоторые проблемы с запуском приложения grails в GGTS (eclipse) из-за перехода на Java 1.8.Несовместимая JVM в 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 
+1

Похоже, вы ударяете изменения в Java 1.8 обновления 40, который больше не позволяет, что этот код пытается сделать –

+1

I не нравятся любые решения, требующие переопределения обновлений Java. Обновления существуют по какой-либо причине (иногда связанной с безопасностью), и следует избегать шагов назад, особенно для производства. Ниже приведено решение, которое не требует понижения версии Java. – dustmachine

ответ

17

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

+1

Извините, если это кажется глупым вопросом, но можно ли перейти к старой версии в ubuntu? – Simo

+0

Etc-alternatives – monksy

+0

Теперь есть обновление рабочего стола с фюзеляжами. – Neoecos

21

версия 1.8.0_40 и 1.8.0_45 имеют нарушение обновления с Грааль. Весна не может копировать некорневые методы.

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

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/Библиотека/орг. springframework/springloaded/jars

Затем я переименую подпружиненную банку, которая есть, и положил в символическую ссылку в банку выше. Раньше считалось, что вы можете просто изменить сценарий startGrails 10, чтобы указать на новую версию, но теперь из-за forking Я нахожу, что вам нужно сделать символическую ссылку. Или бросить эту банку в этой папки и переименовать его, чтобы соответствовать ожиданиям Грааль (переименовать его из подпружиненного-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%; 
+0

@ Симо вы можете посмотреть, как установить java-версию при переполнении стека по адресу http://stackoverflow.com/questions/9219323/downgrade-java-version – penguin

+0

Спасибо. Это решение также работало для меня с Java 8 u45 и springloaded-1.2.3. – sebnukem

+0

Этот метод работал для меня с Java 8 u65 и Grails 2.4.2. Благодаря! – dic19

4

Я бегу 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) 
13

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

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

+0

GGTS имеет комплектную версию Grails. Повторите это решение в другом каталоге, например '/ Applications/ggts-bundle // grails-2.4.4/lib/org.springframework/springloaded/jars /' – dustmachine

+0

Подтвердите также: springloaded-1.2.5 –

+3

он работает. Но не забывайте: a. переименуйте новый JAR в имя старого JAR-файла (например: springloaded-1.2.1.RELEASE.jar). b. очистить свой проект –

7

Шаг 1: Загрузите этот jar

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

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

0

Я подумал, что должен добавить свои две пенсы на эту тему. Недавно я попал в ту же проблему, пытаясь обновить старое приложение до 2.4.4. Причина моего сообщения заключается в том, что все приведенные выше инструкции немного устарели, и в большинстве случаев они могут работать. В тот момент, когда вы вводите драйверы mysql, все вышеперечисленные версии подпружиненного загружают новую проблему вокруг несовместимости и 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. Если вы не изменили конфигурацию.
Re-launch GGTS Я потратил на это время и подумал, что должен обновить инструкции.

Также другая вещь, что я ударил вопросы вокруг было разветвление под Грааль 2.4.4 с моим uprade и в конечном итоге установку

grails.project.fork = [] 

В моей BuildConfig.groovy

1

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

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

2. Установите переменные среды: Не забудьте изменить переменные ЭКОЛОГИЧЕСКИЙ для JDK, нужно просто изменить путь переменных и JAVAHOME переменной из «C: \ Program Files \ Java \ jdk1.8.0_ 'LatestVersion' "до " C: \ Program Files \ Java \ jdk1.8.0_25 ".

0

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

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

Когда я испытывал этот вопрос моей пружинную версии была 1.2.1.RELEASE