首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Proguard不处理FXML中的onAction调用

Proguard是一款用于Java代码混淆和优化的工具,它可以在编译过程中对代码进行压缩、优化和混淆,以提高应用程序的安全性和性能。然而,Proguard在处理FXML文件中的onAction调用时存在一些限制。

FXML是一种用于定义JavaFX用户界面的XML格式文件。在FXML文件中,可以使用onAction属性来指定一个方法,该方法将在用户触发某个事件时被调用。通常,这个方法会在相关的控制器类中定义。

然而,Proguard在处理FXML文件时,并不会自动处理其中的onAction调用。这是因为Proguard是一个静态分析工具,它无法确定FXML文件中的onAction属性所对应的具体方法。因此,如果在混淆过程中对FXML文件进行了处理,可能会导致onAction调用无法正常工作。

为了解决这个问题,可以采取以下几种方法:

  1. 不混淆FXML文件:可以将FXML文件从混淆过程中排除,以确保其中的onAction调用不受影响。在Proguard的配置文件中,可以使用"-keep"选项来指定不混淆特定的类或包。
  2. 使用反射规则:如果需要对FXML文件进行混淆,可以通过在Proguard的配置文件中添加反射规则,来告诉Proguard保留FXML文件中的onAction调用所对应的方法。具体的反射规则可以根据应用程序的需求进行定制。
  3. 手动处理onAction调用:如果无法使用上述方法,可以手动处理FXML文件中的onAction调用。可以在混淆后的代码中,通过反射或其他方式来动态地绑定onAction事件处理程序。

总之,Proguard在处理FXML文件中的onAction调用时存在一些限制,但可以通过排除混淆、添加反射规则或手动处理来解决这个问题。具体的解决方法应根据应用程序的需求和使用场景进行选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JavaFX 简介

用户输入 这个程序可以用来处理用户登录情况,代码如下,重要部分都添加了注释。代码最后一部分使用setOnAction函数为按钮添加了点击事件,当点击按钮时候会显示文本。...这个程序其实也没什么难点,就是使用了网格布局,然后将每个元素添加到网格。关于网格布局属性意义可以参考官方图。 ?...在FXML中用fx:id属性指定ID,可以在控制器声明为一个类字段,通过这个字段就可以和界面组件进行交互。同样道理,onAction声明事件处理程序,在控制器中就是一个方法。...在主程序需要使用FXMLLoader来加载FXML资源,其他部分没有太大变化。...首先需要在FXML文件添加相应样式表引用。文件名前面的@表示这个CSS文件和FXML文件在同一目录下。

5.6K70

JavaFX之Scene Builder使用(开发一款GUI小工具原来这么简单)

我们可以根据自己界面需求,设计自己界面,最后只需要点一下保存就可以生成fxml文件了。...FXML是一种以XML格式表示JavaFX界面对象文件,FXML文件每一个元素可以映射到JavaFX一个类,每个FXML元素属性或者其子元素都可以映射为该对应JavaFXML类属性....7.别忘了点保存啊,点击File,然后点击save,然后我们之前创建fxml文件就会自动补代码~~是不是很方便 8.原来fxml文件就加入了button标签,还有对应属性 4.4 运行我们程序...click方法修改你点击按钮可以实现功能~ 五、拓展 之前我们创建那个Controller类通常需要实现Initializable接口,并重写里面的initialize方法。...拿上面的按钮例子来解释一下标签属性是干嘛吧~ fx:id指就是这个控件id值,为是在Controller类控制这个控件 onAction指的是点击这个按钮就能实现什么功能 text指就是这个按钮文本

8K31

JavagetResource()方法,及路径相关问题

在Java需要加载一个文件时,使用getResource()方法进行加载,会报错 [Caused by: java.lang.NullPointerException: Location is required...二者主要区别如下: getClass().getResource(fileName):表示只会在当前调用类所在同一路径下查找该fileName文件; getClass().getClassLoader...; 如果是前面没有加“/”,如"fileName",则表示相对路径,取与调用类同一路径下该文件。...getClassLoader()表示/目录,即classpath根目录 如果路径包含包名 ,getClass().getResource(“com/xxx/1.xml”); 包名层级使用"/"隔开(...举例: 包com.aaa下有调用类A,需要引用配置文件1.xml: 配置文件在包com.aaa下 getClass().getResource("1.fxml") ——成功 getClass().getResource

3.4K12

java getclassloader_JavagetClassLoader().getResource()和getResource()区别

在Java需要加载一个文件时,使用getResource()方法进行加载,会报错 [Caused by: java.lang.NullPointerException: Location is required...经过查询相关资料后终于明白,区别主要如下: .getClass().getResource(fileName) :表示只会在当前调用类所在同一路径下查找该fileName文件; .getClass()...; 如果是前面没有加“/”,如”fileName”,则表示相对路径,取与调用类同一路径下该文件。...如果路径包含包名 ,getClass().getResource(“com/xxx/1.xml”); 包名层级使用”/”隔开(正斜杠),而非“.”(半角句号)。...举例: 包com.aaa下有调用类A,需要引用配置文件1.xml: 1.

36620

Spring Boot对自然语言处理工具包hanlp调用详解

概 述 HanLP 是基于 Java开发 NLP工具包,由一系列模型与算法组成,目标是普及自然语言处理在生产环境应用。...Spring Boot工程,赘述 (2)引入 HanLP数据 和 配置 下载完成以后,首先解压 hanlp-release.zip压缩包,然后将解压出 HanLP jar包引入 Spring Boot...工程,然后需要来放置 HanLP所需配置和数据: (1)将解压后 hanlp-release.zip压缩包 hanlp.properties配置文件置于项目的 resources资源目录下 (2)然后解压...data.zip压缩包,将解压出 data目录同样至于 resources目录下( data 数据包很重要,是 HanLP工作所需词典和模型 ) 创建 IO适配器 HanLP 提供了IO适配器.../w] 每个词段后 /nx,/w之类是 HanLP定义词性,可以去看 HanLP接口来获取详情 · 文本推荐 图3.JPG 三个关键字语句推荐结果为: 机器学习  →  [人工智能如今是非常火热一门技术

1.2K00

【音频处理】使用 PolyPhone 软件修正 SoundFont 音源规范音符 ( 设置音符频率校正 )

文章目录 一、SoundFont 设置样本基本音符 二、SoundFont 设置音符校正 一、SoundFont 设置样本基本音符 ---- 在红色矩形框设置样本基本音符 ; 二、SoundFont...设置音符校正 ---- 如果采集样本不规范 , 如演奏者没有演奏出准确音符 , 这里就需要进行校音 , 在上图紫色矩形框设置校音 ; 校音 100 对应 1 和半音 ; 下图中设置 样本基本音符...56 (G\#) , 校音设置 +100 , 则实际发出音符是 57 ; 设置样本时 , 如果设置基本音符是 56 , 但是通过调音器发现 , 可以点击试听 , 播放该样本 , 如果样本实际音符不是...56 , 那么开始设置校音属性 , 调节范围是 -100 ~ +100 , 对应 -1 ~ +1 , 个半音 ; 假如最终调节校音是 +35 , 说明最终在 01 样本基础上..., 增加了 0.35 个半音 , 该样本最终达到了 56 这个音高 ; 说明该音符原本音高时 55.65 ;

85710

首发! JDK14之jpackage命令尝鲜

,要再声明一遍依赖 opens: 当前模块哪些包,可以被反射....如fxml要声明处理controller , 每当fxml加载时候,都会去新建一个controller实例, 所以需要opens controller包名给javafx.fxml exports...一般用于别的模块依赖当前模块时候 jdk9及以后打包方式 在jdk9及以后,打包方式,可以局限于打jar包,可以把jdk这些模块给一起用jlink打成一个镜像....如上所示, 会在build目录,生成image镜像文件夹,然后在其中有bin , conf, lib .然后用cmd运行bin目录Sunflower就可以了, 如下所示: 记住这朵Sunflower...最终如上图,可以看到生成dmg文件, 在mac上,进行安装就可以使用了 项目源码 一.Sunflower应用还在开发, 不久后会开放下载.

3.7K30

VBA专题10-23:使用VBA操控Excel界面之添加动态菜单

下面展示了选择不同工作表时菜单内容: 640.gif 保留自定义复选框勾选条件 在上面的示例XML和VBA代码,当用户在工作表Data单击动态菜单复选框后,复选框会相应地显示勾选或者取消勾选...在Checkbox1_Change过程包含额外代码语句,由checkBox元素onAction属性引用: Sub Checkbox1_Change(control As IRibbonControl...现在,复选框能够保留其在动态菜单被无效并重新构建后状态。正如所看到,Checkbox1Pressed模块级变量在过程调用之间保留其值。...在VBE,选择运行|重新设置。 当VBE显示标准错误消息框(因为一个未处理运行时错误发生),可以单击消息框结束按钮。 关闭该工作簿文件。...如果没有未处理错误,你可以只执行前两种方法,而用户可以仅执行最后一种方法。因此,只要该工作簿文件保持打开,Checkbox1Pressed变量就能够合适地反映该复选框状态。

6K20

android开发笔记之 Android代码混淆打包

三, 是我们java 元素名称是在配置文件配置好。 所以使用proguard时,我们需要有个配置文件告诉proguard 那些java 元素是不能混淆。...:主要有导出apk文件、项目根目录下 proguard目录下文件(主要是mapping.txt)和项目源码; 4.项目运行过程出错处理:根据错误信息和第3步中保存mapping定位错 误位置。...”这行前“#”删除,最后导出即可 实现对代码混淆,即使我们没有去编写proguard-project.txt内容。...剩下也是最难 就是proguard-project.txt文件编写。对于这部分,两种处理策略:自 己编写和使用别人写好。...没错,上面 proguard-project.txt意思就是保持MainActivitygetString()方法 要被混淆。大家也可以试试上述混淆代码中被注释两行分别是什么效 果。

75220

android混淆那些坑

ProGuard简介 在最新Android Studio 2.2.2版本创建Android工程,modulebuild.gradle有如下一段配置。...proguard-android.txt’是Android SDK自带一个基本Progurad配置文件,默认是空白,需要由开发者自行添加哪些需要混淆哪些混淆,形如: -ignorewarning...这里我们引入Entry Point概念。Entry Point是在ProGuard过程不会被处理类或方法。...proguardgui.jar是Proguard提供一个图形界面工具,通过proguardgui.jar可以方便查看和编辑Proguard配置,以及调用proguard.jar来执行一次优化过程。...混淆之后jar文件执行过程如果出现异常,生成异常信息将很难被解读,方法调用堆栈都是一些混淆之后名字,通过retrace.jar可以将异常堆栈信息方法名还原成混淆前名字,方便程序解决bug

3.1K60

VBA专题10-22:使用VBA操控Excel界面之重新利用内置控件以及监控内置控件

在标准VBA模块编辑回调过程,永久地重新利用“剪切”控件功能: 'Callback for Cut onAction Sub MyCut(control As IRibbonControl, ByRef...然而,如果用户不单击控件或者使用合适Alt+键来触发控件(本例,Alt+H+X触发剪切控件),被重新利用控件不会总是按意图工作。例如,仍然可以通过使用Ctrl+X键组合来访问剪切功能。...也可以临时覆盖内置控件功能,并通过简单地设置回调过程参数cancelDefault为False来重新恢复其功能。...cancelDefault = False End Sub 注意,“加粗”控件是一个切换按钮,其onAction属性回调必须带有上面所示3个参数。...或者,最好通过Workbook_BeforePrint事件处理来中断打印,如下面的代码: Private Sub Workbook_BeforePrint(Cancel As Boolean)

1.1K10

javaFX(二)-使用gradle+jdk14创建javafx程序

在上一篇文章,我们一起学习了jlink和jdk14模块化. 在本篇文章,我们一起来学习gradle来新建一个javafxHello World 程序....这也是最简javafx程序结构,有一个fxml做页面布局,有一个Main函数,有一个Controller进行事件处理 主要代码 build.gradle plugins { id 'application...14" modules = [ 'javafx.controls' ,'javafx.fxml'] } // 定义jdk版本,还有Mainclass位置 sourceCompatibility...文件上控件是对应 @FXML private Button button; @FXML private Label label; @FXML private...开源代码 其实我一直不想在文章写很多代码,平常小刀在朋友圈发那个工具,已经开源, 而且也有小伙伴下载下来成功运行了, 所以,,,不要纠结上面的代码,,可以直接下载这个就行 https://github.com

4.2K20
领券