3

在 IntelliJ 2017.2.2 中,如果>设置为 Java 1.8,我可以vaadin-archetype-application在 Java 9+181 下使用 Tomcat 8.5.20运行 Vaadin 8.1.2 应用程序(全新原型)。Project StructureProject SDK

如果Project Structure>Project SDK设置为 Java 9,我会收到这个编译器错误,其中包含与 Vaadin MouseEventsFillIn相关的断言错误。filling我试过谷歌搜索,但没有发现任何线索。

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 项目运行)
  • 如果是这样,在我使用全新的未修改 Vaadin 应用程序 Maven 原型的情况下可能会出现什么问题?
4

1 回答 1

2

内联为时间线

  • 在我使用全新的未修改的 Vaadin 应用程序 Maven 原型的情况下,可能会出现什么问题?

为了具体找到您案例的根本原因,我们肯定需要更多详细信息来了解您在代码定义方面所尝试的内容。

  • IntelliJ + Vaadin + Tomcat 可以在 Java 9 下工作吗?*

On 22 August 2017

的。你可以使这个特定的组合工作。在解决了我无法在 Java9 项目中处理文件 module-info.class 导致 ClassFormatExceptionmvn package的问题后,我最终可以得到使用tomcat 运行的战争。

详细信息:您需要使用 Java 9 兼容版本的 Tomcat。(apache-tomcat-9.0.0.M26在我的情况下)并将其配置为开始

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

服务器启动后,您可以访问应用程序@ localhost:8080/vaadinjavanine/,其中vaadinjavanine是我的 tomcat 的 webapps 文件夹中的 war 文件名。

On 21 August 2017

遗憾的是,特定于组合的答案仍然是No。我相信目前还不可能使这种组合发挥作用。

码头服务器

这是我更新的示例应用程序,它 在我使用的 Jetty 服务器上与 IntelliJ + Vaadin + Jettylocalhost:8080一起使用,无论我的项目 SDK 设置为 Java1.8 还是 Java9。它的工作原理是这样的:

Vaadin 默认应用程序

这是在克服#jetty.project/1758之后通过升级到6.0_BETAofasmasm-commons库并使用9.4.7-SNAPSHOT在项目中使用的本地构建的自定义实现的(提交 - #e34415。)

Tomcat 服务器

  1. 按照推荐的创建战争的方式,我<finalName>vaadinjavanine</finalName>使用以下命令创建了应用程序战争(在我的情况下):

    mvn package
    
  2. 确保 CATALINA_HOME/webapps 包含此文件。基本复制过来了。

  3. 在默认端口上启动 tomcat 以访问应用程序的 url:localhost:8080/vaadinjavanine/

但最终在当前链中发现了另一个问题: 无法在 Java9 项目中处理文件 module-info.class 导致 ClassFormatException


On 20 August 2017

问题的答案是否定的。我所做的是,尝试按照入门指南从头开始基于 java9 创建一个基于 maven 的 vaadin 应用程序。使用以下配置:

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)

vaadin-archetype-application使用指南共享中的共享创建了一个 Maven 模块。更新

  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:扫描 UI 和 Servlet 类时出错

于 2017-08-21T19:00:30.307 回答