Запустите приложение Vaadin 8.1 в предварительной версии Java 9 в IntelliJ 2017.2.2.

В IntelliJ 2017.2.2 я могу запустить приложение Vaadin 8.1.2 (новый архетип vaadin-archetype-application) с Tomcat 8.5.20 под Java 9+181, если для Project Structure > Project SDK установлено значение Java 1.8.

Если Project Structure> Project SDK установлено на Java 9, я получаю эту ошибку компилятора около FillIn с ошибкой утверждения о filling что-то делать с Vaadin MouseEvents. Я пробовал гуглить, но не нашел подсказок.

Information:java: An exception has occurred in the compiler (9). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program and the following diagnostic in your report. Thank you.
Information:java:   at jdk.compiler/com.sun.tools.javac.code.ClassFinder.fillIn(ClassFinder.java:340)
Information:java:   at jdk.compiler/com.sun.tools.javac.code.ClassFinder.complete(ClassFinder.java:285)
Information:java:   at jdk.compiler/com.sun.tools.javac.code.Symbol.complete(Symbol.java:633)
Information:java:   at jdk.compiler/com.sun.tools.javac.code.Symbol$ClassSymbol.complete(Symbol.java:1314)
Information:java:   at jdk.compiler/com.sun.tools.javac.code.Symbol$ClassSymbol.flags(Symbol.java:1248)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.Resolve.isAccessible(Resolve.java:405)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.Resolve.isAccessible(Resolve.java:389)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.Resolve.findImmediateMemberType(Resolve.java:2170)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.Resolve.findMemberType(Resolve.java:2225)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.Resolve.findIdentInType(Resolve.java:2403)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.Attr.selectSym(Attr.java:3588)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:3453)
Information:java:   at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:2104)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.Attr.attribTree(Attr.java:653)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.Attr.attribType(Attr.java:713)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.Attr.attribType(Attr.java:706)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.Attr.attribBase(Attr.java:859)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.TypeEnter$AbstractHeaderPhase.attribSuperTypes(TypeEnter.java:669)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.TypeEnter$HierarchyPhase.runPhase(TypeEnter.java:742)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.TypeEnter$Phase.doCompleteEnvs(TypeEnter.java:270)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.TypeEnter$HierarchyPhase.complete(TypeEnter.java:785)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.TypeEnter$HierarchyPhase.doCompleteEnvs(TypeEnter.java:730)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.TypeEnter$Phase.completeEnvs(TypeEnter.java:245)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.TypeEnter$Phase.completeEnvs(TypeEnter.java:254)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.TypeEnter.complete(TypeEnter.java:195)
Information:java:   at jdk.compiler/com.sun.tools.javac.code.Symbol.isInterface(Symbol.java:393)
Information:java:   at jdk.compiler/com.sun.tools.javac.jvm.ClassReader.readMethod(ClassReader.java:2353)
Information:java:   at jdk.compiler/com.sun.tools.javac.jvm.ClassReader.readClass(ClassReader.java:2641)
Information:java:   at jdk.compiler/com.sun.tools.javac.jvm.ClassReader.readClassBuffer(ClassReader.java:2706)
Information:java:   at jdk.compiler/com.sun.tools.javac.jvm.ClassReader.readClassFile(ClassReader.java:2719)
Information:java:   at jdk.compiler/com.sun.tools.javac.code.ClassFinder.fillIn(ClassFinder.java:348)
Information:java:   at jdk.compiler/com.sun.tools.javac.code.Type$ClassType.complete(Type.java:1139)
Information:java:   at jdk.compiler/com.sun.tools.javac.code.Type$ClassType.getTypeArguments(Type.java:1065)
Information:java:   at jdk.compiler/com.sun.tools.javac.code.Type$ClassType.isErroneous(Type.java:1095)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.Check.checkNonCyclicInternal(Check.java:2316)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.Check.checkNonCyclicInternal(Check.java:2327)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.Check.checkNonCyclicInternal(Check.java:2330)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.Check.checkNonCyclicInternal(Check.java:2323)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.Check.checkNonCyclic(Check.java:2277)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.Attr.checkBase(Attr.java:901)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.Attr.attribBase(Attr.java:860)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.Enter.complete(Enter.java:577)
Information:java:   at jdk.compiler/com.sun.tools.javac.comp.Enter.main(Enter.java:554)
Information:java:   at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.enterTrees(JavaCompiler.java:1052)
Information:java:   at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:923)
Information:java:   at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:100)
Information:java:   at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.handleExceptions(JavacTaskImpl.java:142)
Information:java:   at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:96)
Information:java:   at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:90)
Information:java:   at org.jetbrains.jps.javac.JavacMain.compile(JavacMain.java:190)
Information:java:   at org.jetbrains.jps.incremental.java.JavaBuilder.compileJava(JavaBuilder.java:473)
Information:java:   at org.jetbrains.jps.incremental.java.JavaBuilder.compile(JavaBuilder.java:328)
Information:java:   at org.jetbrains.jps.incremental.java.JavaBuilder.doBuild(JavaBuilder.java:255)
Information:java:   at org.jetbrains.jps.incremental.java.JavaBuilder.build(JavaBuilder.java:208)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:1260)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:937)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:1009)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:900)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:733)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:385)
Information:java:   at org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:192)
Information:java:   at org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:138)
Information:java:   at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:295)
Information:java:   at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:125)
Information:java:   at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler.lambda$channelRead0$0(BuildMain.java:236)
Information:java:   at org.jetbrains.jps.service.impl.SharedThreadPoolImpl.lambda$executeOnPooledThread$0(SharedThreadPoolImpl.java:42)
Information:java:   at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:514)
Information:java:   at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
Information:java:   at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
Information:java:   at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
Information:java:   at java.base/java.lang.Thread.run(Thread.java:844)
Information:java: Errors occurred while compiling module 'vnine'
Information:javac 9 was used to compile java sources
Information:Module "vnine" was fully rebuilt due to project configuration/dependencies changes
Information:2017-08-18, 15:40 - Compilation completed with 2 errors and 0 warnings in 1s 866ms
Error:java: java.lang.AssertionError: Filling jar:file:///Users/basilbourque/.m2/repository/com/vaadin/vaadin-server/8.1.2/vaadin-server-8.1.2.jar!/com/vaadin/ui/Component$Event.class during JarFileObject[/Users/basilbourque/.m2/repository/com/vaadin/vaadin-server/8.1.2/vaadin-server-8.1.2.jar:/com/vaadin/event/MouseEvents$ClickEvent.class]
Error:java:     at jdk.compiler/com.sun.tools.javac.util.Assert.error(Assert.java:162)

Итак, два вопроса:

  • Можно ли заставить IntelliJ + Vaadin + Tomcat работать под Java 9? (то есть запуск как проекта Java 9 — действительно работает на Java 9, но только как проект Java 8)
  • Если да, то в чем может быть проблема в моем случае с использованием совершенно нового немодифицированного архетипа Maven приложения Vaadin?

person Basil Bourque    schedule 18.08.2017    source источник
comment
Не могли бы вы поделиться кодом, который вы используете для проверки этого.   -  person Naman    schedule 19.08.2017
comment
@nullpointer После того, как мой собственный проект потерпел неудачу с настройками, описанными выше, я попробовал совершенно новый проект, сгенерированный из первого архетипа Maven перечисленного здесь. Я никогда не прикасался к коду Java, даже не открывал файлы Java.   -  person Basil Bourque    schedule 19.08.2017
comment
Похоже, к сожалению, ответ на вопрос пока может быть НЕТ. Пытался создать проект, используя Jetty вместо Tomcat. Удалось упаковать войну. Но и .war не работает в tomcat (получение 404 даже после того, как война размещена в веб-приложениях), а с другой стороны, с причалом получилось еще одна проблема!   -  person Naman    schedule 19.08.2017
comment
наконец, решение этой проблемы было найдено. Обновили ответ.   -  person Naman    schedule 22.08.2017


Ответы (1)


Встраивается как временная шкала

  • В чем может быть проблема в моем случае с использованием совершенно нового немодифицированного архетипа Maven приложения Vaadin?

Чтобы добраться до первопричины конкретно вашего случая, нам наверняка понадобится больше подробностей о том, что вы пробовали с точки зрения определений кода.

  • Можно ли заставить IntelliJ + Vaadin + Tomcat работать под Java 9?*

On 22 August 2017

Да. Вы можете заставить эту конкретную комбинацию работать. После решения проблемы, когда я Невозможно обработать файл module-info.class в проекте Java9, что приводит к исключению ClassFormatException Я мог бы, наконец, запустить войну, созданную с помощью mvn package, с tomcat.

Подробности: вам необходимо использовать версию Tomcat, совместимую с Java 9. (apache-tomcat-9.0.0.M26 в моем случае) и настройте его так, чтобы он начинался с

Using JRE_HOME: /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/

После запуска сервера вы можете получить доступ к приложению @ localhost:8080/vaadinjavanine/, где vaadinjavanine — это имя файла войны в папке веб-приложений моего кота.

On 21 August 2017

К сожалению, ответ, специфичный для комбинации, по-прежнему Нет. Я считаю, что пока невозможно заставить эту комбинацию работать.

Jetty-сервер

Вот обновленный мной пример приложения, который работает с IntelliJ + Vaadin + Jetty на моем localhost:8080 с использованием сервера Jetty, независимо от того, установлен ли для моего Project SDK Java1.8 или Java9. Это работает примерно так:

Приложение Vaadin по умолчанию

Это было достигнуто после преодоления #jetty.project/1758 путем обновления до 6.0_BETA из asm и asm-commons библиотек и с помощью пользовательского 9.4.7-SNAPSHOT построен на моем локальном компьютере, используемом в проекте (коммит - #e34415.)

Сервер Tomcat

  1. Следуя рекомендованному способу создания войны, я создал войну приложений (в моем случае <finalName>vaadinjavanine</finalName>) с помощью команды:

    mvn package
    
  2. Убедитесь, что CATALINA_HOME/webapps включает этот файл. Скопировал в принципе.

  3. Запустил tomcat на порту по умолчанию для доступа к URL-адресу приложения: localhost:8080/vaadinjavanine/

Но в итоге обнаружили еще одну проблему в текущей цепочке: Невозможность обработки файла module-info.class в проекте Java9 приводит к ClassFormatException


On 20 August 2017

Ответ на вопрос Нет. Что я сделал, так это попытался создать приложение vaadin на основе maven с нуля на основе java9, следуя руководство по началу работы. Используя следующие конфигурации:

apache-tomcat-8.0.22 

intelliJ-IDEA 2017.2.2

<vaadin.version>8.1.2</vaadin.version>

Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-04T01:09:06+05:30)
Maven home: /usr/local/Cellar/maven/3.5.0/libexec
Java version: 9, vendor: Oracle Corporation (jdk-9+181)

Создал модуль maven, используя vaadin-archetype-application, как указано в общем руководстве. Обновлено

  1. pom.xml с

    <maven.compiler.source>1.9</maven.compiler.source>
    <maven.compiler.target>1.9</maven.compiler.target>
    
  2. Добавлен module-info.java в модуль в разработке.

Я смог выполнить mvn package на том же, но запуск mvn jetty:run для запуска приложения привел к MultiException | java.lang.RuntimeException: ошибка сканирования пользовательского интерфейса и класса сервлета

person Naman    schedule 21.08.2017
comment
Спасибо за ваши усилия и обновления. Поскольку Tomcat 9 еще не рекомендуется, ответ по-прежнему будет отрицательным для запуска основного Tomcat 8.5.x. Что касается вашего первого предложения, то мой случай вообще не конкретен. Я просто запустил исходное приложение, созданное автоматически, в виде предоставленного Vaadin.com архетипа Maven, задокументированного в Вопросе. Никакого собственного кода. - person Basil Bourque; 03.10.2017
comment
К вашему сведению: см. сообщение в блоге Vaadin: Подробнее о совместимости с Java 9 - person Basil Bourque; 15.11.2017