`
61party
  • 浏览: 1101007 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

JavaFX编译器编译重载方法的一处BUG

阅读更多

直接看测试代码吧,一共2个类:BugTest.fx和A.fx,SDK版本是1.2.3。

/*
*BugTest.fx
*
*Createdon2010-2-25,22:05:11
*/
package org.jqueen.fx.bug;

/**
*
@author Leon
*/
public class BugTest{

// 取消该方法注释编译将抛出异常
// functiontest(a:A):Void{
// test(5);
// }

functiontest(s:String):Void{
test(
5 );
}

functiontest(i:Integer):Void{
}

}
/*
*A.fx
*
*Createdon2010-2-25,22:10:45
*/

package org.jqueen.fx.bug;

/**
*
@author Leon
*/

public mixin class A{ }
BugTest里实现了3个带输入参数的重载方法,第一个方法的参数是自定义类型A,A被声明为mixin ,后2个的参数是原始类型。只有在第一个方法被注释的情况下该类才可以被编译通过,否则编译器会抛出异常:
An exception has occurred in the OpenJavafx compiler. Please file a bug at the Openjfx-compiler issues home (https://openjfx-compiler.dev.java.net/Issues) after checking for duplicates. Include the following diagnostic in your report and, if possible, the source code which triggered this problem. Thank you.
java.lang.ClassCastException: com.sun.tools.javac.code.Symbol$ClassSymbol
at com.sun.tools.javafx.code.JavafxTypes.asSuper(JavafxTypes.java:202)
at com.sun.tools.javac.code.Types.isSubtypeUnchecked(Types.java:305)
at com.sun.tools.javafx.comp.JavafxResolve.argumentsAcceptable(JavafxResolve.java:421)
at com.sun.tools.javafx.comp.JavafxResolve.rawInstantiate(JavafxResolve.java:387)
at com.sun.tools.javafx.comp.JavafxResolve.selectBest(JavafxResolve.java:711)
at com.sun.tools.javafx.comp.JavafxResolve.findMemberWithoutAccessChecks(JavafxResolve.java:952)
at com.sun.tools.javafx.comp.JavafxResolve.findMember(JavafxResolve.java:906)
at com.sun.tools.javafx.comp.JavafxResolve.findMember(JavafxResolve.java:886)
at com.sun.tools.javafx.comp.JavafxResolve.findVar(JavafxResolve.java:567)
at com.sun.tools.javafx.comp.JavafxResolve.findIdent(JavafxResolve.java:1228)
at com.sun.tools.javafx.comp.JavafxResolve.resolveIdent(JavafxResolve.java:1423)
at com.sun.tools.javafx.comp.JavafxAttr.visitIdent(JavafxAttr.java:506)
at com.sun.tools.javafx.tree.JFXIdent.accept(JFXIdent.java:52)
at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:280)
at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:265)
at com.sun.tools.javafx.comp.JavafxAttr.attribExpr(JavafxAttr.java:311)
at com.sun.tools.javafx.comp.JavafxAttr.visitFunctionInvocation(JavafxAttr.java:2239)
at com.sun.tools.javafx.tree.JFXFunctionInvocation.accept(JFXFunctionInvocation.java:53)
at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:280)
at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:265)
at com.sun.tools.javafx.comp.JavafxAttr.attribExpr(JavafxAttr.java:303)
at com.sun.tools.javafx.comp.JavafxAttr.visitBlockExpression(JavafxAttr.java:1373)
at com.sun.tools.javafx.tree.JFXBlock.accept(JFXBlock.java:83)
at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:280)
at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:265)
at com.sun.tools.javafx.comp.JavafxAttr.attribExpr(JavafxAttr.java:311)
at com.sun.tools.javafx.comp.JavafxAttr.finishFunctionDefinition(JavafxAttr.java:1863)
at com.sun.tools.javafx.comp.JavafxMemberEnter$SymbolCompleter.complete(JavafxMemberEnter.java:646)
at com.sun.tools.javac.code.Symbol.complete(Symbol.java:400)
at com.sun.tools.javafx.comp.JavafxAttr.visitFunctionDefinition(JavafxAttr.java:1658)
at com.sun.tools.javafx.tree.JFXFunctionDefinition.accept(JFXFunctionDefinition.java:93)
at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:280)
at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:265)
at com.sun.tools.javafx.comp.JavafxAttr.attribExpr(JavafxAttr.java:321)
at com.sun.tools.javafx.comp.JavafxMemberEnter$SymbolCompleter.complete(JavafxMemberEnter.java:643)
at com.sun.tools.javac.code.Symbol.complete(Symbol.java:400)
at com.sun.tools.javafx.comp.JavafxResolve.findMemberWithoutAccessChecks(JavafxResolve.java:943)
at com.sun.tools.javafx.comp.JavafxResolve.findMember(JavafxResolve.java:906)
at com.sun.tools.javafx.comp.JavafxResolve.findMember(JavafxResolve.java:886)
at com.sun.tools.javafx.comp.JavafxResolve.findVar(JavafxResolve.java:567)
at com.sun.tools.javafx.comp.JavafxResolve.findIdent(JavafxResolve.java:1228)
at com.sun.tools.javafx.comp.JavafxResolve.resolveIdent(JavafxResolve.java:1423)
at com.sun.tools.javafx.comp.JavafxAttr.visitIdent(JavafxAttr.java:506)
at com.sun.tools.javafx.tree.JFXIdent.accept(JFXIdent.java:52)
at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:280)
at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:265)
at com.sun.tools.javafx.comp.JavafxAttr.attribExpr(JavafxAttr.java:311)
at com.sun.tools.javafx.comp.JavafxAttr.visitFunctionInvocation(JavafxAttr.java:2239)
at com.sun.tools.javafx.tree.JFXFunctionInvocation.accept(JFXFunctionInvocation.java:53)
at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:280)
at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:265)
at com.sun.tools.javafx.comp.JavafxAttr.attribExpr(JavafxAttr.java:303)
at com.sun.tools.javafx.comp.JavafxAttr.visitBlockExpression(JavafxAttr.java:1373)
at com.sun.tools.javafx.tree.JFXBlock.accept(JFXBlock.java:83)
at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:280)
at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:265)
at com.sun.tools.javafx.comp.JavafxAttr.attribExpr(JavafxAttr.java:311)
at com.sun.tools.javafx.comp.JavafxAttr.finishFunctionDefinition(JavafxAttr.java:1863)
at com.sun.tools.javafx.comp.JavafxMemberEnter$SymbolCompleter.complete(JavafxMemberEnter.java:646)
at com.sun.tools.javac.code.Symbol.complete(Symbol.java:400)
at com.sun.tools.javafx.comp.JavafxAttr.visitFunctionDefinition(JavafxAttr.java:1658)
at com.sun.tools.javafx.tree.JFXFunctionDefinition.accept(JFXFunctionDefinition.java:93)
at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:280)
at com.sun.tools.javafx.comp.JavafxAttr.attribTree(JavafxAttr.java:265)
at com.sun.tools.javafx.comp.JavafxAttr.attribDecl(JavafxAttr.java:334)
at com.sun.tools.javafx.comp.JavafxAttr.attribClassBody(JavafxAttr.java:3696)
at com.sun.tools.javafx.comp.JavafxAttr.attribClass(JavafxAttr.java:2808)
at com.sun.tools.javafx.comp.JavafxAttr.attribClass(JavafxAttr.java:2763)
at com.sun.tools.javafx.main.JavafxCompiler.attribute(JavafxCompiler.java:936)
at com.sun.tools.javafx.main.JavafxCompiler.compile2(JavafxCompiler.java:782)
at com.sun.tools.javafx.main.JavafxCompiler.compile(JavafxCompiler.java:685)
at com.sun.tools.javafx.main.Main.compile(Main.java:624)
at com.sun.tools.javafx.main.Main.compile(Main.java:312)
at com.sun.tools.javafx.Main.compile(Main.java:84)
at com.sun.tools.javafx.Main.main(Main.java:69)
分享到:
评论

相关推荐

    基于java语言开发的c语言编译器,javafx实现界面化的LR1编译器

    基于java语言开发的c语言编译器,javafx实现界面化的LR1编译器 支持大部分代码编译 不支持多函数编译 支持while循环,不支持do while循环 不支持goto 一些语句 目标代码可以显示、但是无实际作用,就是一个幌子 还有...

    javafx入门教程

    JavaFX是一种基于Java平台的脚本语言,用于开发Rich Internet Applications(RIA)。本教程将指导您从基础知识开始学习JavaFX脚本语言。 JavaFX概述 JavaFX是一种新的脚本语言,由Sun Microsystems开发,用于开发...

    JavaFX Script 脚本编程语言

    另一种方法是仅从 OpenJFX 项目 Web 站点下载最新的编译器二进制文件。 knowledge point 4: 编写第一个脚本 在编写第一个脚本时,需要了解编译源代码、运行应用程序、声明脚本变量、定义和调用脚本函数、向脚本...

    C语言编译器_编译原理_词法分析_语法分析_java图形界面版本_CompilingPrinciple.zip

    利用这些库,开发者可以创建一个友好的界面,用户可以在其中输入C代码,编译器则在后台进行词法分析和语法分析,最后显示编译结果或错误信息。 五、实际应用与挑战 理解编译原理对于软件工程师来说至关重要,无论...

    javaFX docs(英文)

    JavaFX是Sun Microsystems(后被Oracle收购)在2008年12月5日推出的一项创新技术,它主要目标是提供一个丰富的客户端应用程序平台,用于构建桌面、移动和Web应用。JavaFX的设计目的是增强Java应用程序的用户界面,...

    Java实现的编译原理课程设计- C语言编译器

    在本项目中,我们探讨的是一个使用Java语言实现的编译原理课程设计,具体目标是构建一个能够解析和编译C语言源代码的编译器。这个编译器的实现涵盖了编译器设计中的几个核心步骤,包括词法分析、语法分析、四元式...

    javafx-sdk-11.0.2

    JavaFX SDK 11.0.2 是一个用于开发富客户端应用程序的工具包,它在Java 11及更高版本中不再作为标准JDK的一部分。这个独立的SDK提供了必要的库和工具,使得开发者能够在Java平台上构建具有丰富图形用户界面(GUI)的...

    Kotlin的轻量级JavaFX框架

    2. **类型安全**:Kotlin是一种静态类型语言,这意味着在编译阶段就能发现许多错误,避免了运行时可能出现的问题。TornadoFX利用这一点,提供了类型安全的API,确保你在操作JavaFX组件时不会出错。 3. **响应式编程...

    openjdk8 with javafx

    OpenJDK8 with JavaFX 是一个开放源代码的Java开发工具包,它包含了Java标准版(Java SE)的实现,以及JavaFX库。OpenJDK是Oracle JDK的开源替代品,由OpenJDK社区维护和开发,而JavaFX是构建桌面、移动和Web应用...

    javafx使用方法

    javafx使用方法-javafx使用方法

    利用javafx实现的一个具有完整功能的播放器

    这是利用sun的javafx实现的具有相对完整功能的多媒体播放器-----相对于网上的“一分钟写出一个javafx播放器”而言。 注意:javafx需要一些运行环境,具体说来是: 1.jdk6update14以上 2.javafx运行包----如果你在...

    gui.rar_java 编译器

    这个编译器设计用于提供一个友好的图形环境,帮助开发者更方便地编译Java源代码。 【描述】"包的路径为com.baoyabing.gui"揭示了该编译器的源代码组织结构。在Java编程中,包(package)是用来组织类和接口的一种...

    学习JavaFX脚本语言

    JavaFX预编译了许多类文件,允许开发者创建包含复杂视觉效果的GUI应用。 **对象结构** 对象结构简单易懂。类型名(如`Address`)表明要创建的对象类型,大括号界定对象的内容,其中的实例变量分配初始值。例如,...

    JavaFx登录跳转完整教程含源码

    知识点1:JavaFx简介 JavaFx是Oracle公司推出的一个跨平台的图形用户界面工具包,用于开发桌面应用程序。JavaFx提供了一个基于Scene Graph的图形渲染引擎,可以用于开发富客户端应用程序。 知识点2:FXML简介 ...

    javafx-sdk-17.0.2-lts-windows-x64

    1. **VM.txt**: 这可能是一个文档,包含了关于Java虚拟机(JVM)的配置信息或者使用JavaFX的特定要求。开发者可以参考这个文件来确保他们的运行环境与JavaFX兼容。 2. **src.zip**: 这个文件包含了JavaFX的源代码。...

    javafx javafx javafx javafx

    javafx

    javaFX不同窗口之间进行调用以及进行通信的实现办法

    JavaFX是一种用于构建桌面、移动和嵌入式系统的富客户端应用程序的Java库。它提供了丰富的图形用户界面(GUI)组件和强大的2D/3D渲染能力。在开发JavaFX应用时,有时我们需要在不同的窗口之间进行交互和通信,这对于...

    javaFX Demo 模板案例

    JavaFX 是一个用于构建桌面、移动和嵌入式设备上富客户端应用的开源图形用户界面(GUI)工具包。它是Java平台的一部分,提供了一系列高级特性,包括2D和3D图形处理、媒体支持、CSS样式以及强大的数据绑定机制。本...

    javafx官方教程

    - **IDE**:提供一站式开发体验,包括编译、运行、调试等功能。官方推荐使用 NetBeans IDE 6.5.1,可通过其官方网站获取安装指南。 - **文本编辑器**:对于习惯使用特定文本编辑器(如 vi)的开发者来说,可以通过...

    class反编译器

    JAD不仅能够反编译.class文件,还支持反编译包含JSP、JavaFX和Android Dalvik字节码的文件。它能够尽可能地恢复源代码的原始结构,包括注释、变量名和方法名,尽管这些在编译后通常会被优化或丢失。 除了JAD,还有...

Global site tag (gtag.js) - Google Analytics