- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Proguard 和 Maven 来屏蔽我的 Java 代码。
我将所有函数从匿名声明更改为 Lambda 表达式0,但编译并运行后出现错误
2017-sty-20 08:53:46,289 ERROR [AWT-EventQueue-0] - Exception in thread "AWT-EventQueue-0"
2017-sty-20 08:53:46,289 ERROR [AWT-EventQueue-0] - java.lang.BootstrapMethodError: call site initialization exception
2017-sty-20 08:53:46,289 ERROR [AWT-EventQueue-0] - at java.lang.invoke.CallSite.makeSite(Unknown Source)
2017-sty-20 08:53:46,289 ERROR [AWT-EventQueue-0] - at java.lang.invoke.MethodHandleNatives.linkCallSiteImpl(Unknown Source)
2017-sty-20 08:53:46,289 ERROR [AWT-EventQueue-0] - at java.lang.invoke.MethodHandleNatives.linkCallSite(Unknown Source)
2017-sty-20 08:53:46,289 ERROR [AWT-EventQueue-0] - at com.goodsoft.stockbox.chart.f.c.h.a(ChartWindowPanel.java:50208)
2017-sty-20 08:53:46,289 ERROR [AWT-EventQueue-0] - at com.goodsoft.stockbox.commons.f.h.a.b.n(BaseWindowController.java:269)
2017-sty-20 08:53:46,289 ERROR [AWT-EventQueue-0] - at com.goodsoft.stockbox.commons.f.h.a.b.a(BaseWindowController.java:30)
2017-sty-20 08:53:46,289 ERROR [AWT-EventQueue-0] - at com.goodsoft.stockbox.commons.f.h.a.b$1.m(BaseWindowController.java:164)
2017-sty-20 08:53:46,289 ERROR [AWT-EventQueue-0] - at com.goodsoft.stockbox.commons.b.c.d$3.c(InstrumentController.java:324)
2017-sty-20 08:53:46,289 ERROR [AWT-EventQueue-0] - at java.awt.event.InvocationEvent.dispatch(Unknown Source)
2017-sty-20 08:53:46,289 ERROR [AWT-EventQueue-0] - at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
2017-sty-20 08:53:46,289 ERROR [AWT-EventQueue-0] - at java.awt.EventQueue.access$500(Unknown Source)
2017-sty-20 08:53:46,289 ERROR [AWT-EventQueue-0] - at java.awt.EventQueue$3.run(Unknown Source)
2017-sty-20 08:53:46,289 ERROR [AWT-EventQueue-0] - at java.awt.EventQueue$3.run(Unknown Source)
2017-sty-20 08:53:46,289 ERROR [AWT-EventQueue-0] - at java.security.AccessController.doPrivileged(Native Method)
2017-sty-20 08:53:46,289 ERROR [AWT-EventQueue-0] - at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
2017-sty-20 08:53:46,289 ERROR [AWT-EventQueue-0] - at java.awt.EventQueue.dispatchEvent(Unknown Source)
2017-sty-20 08:53:46,289 ERROR [AWT-EventQueue-0] - at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
2017-sty-20 08:53:46,289 ERROR [AWT-EventQueue-0] - at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
2017-sty-20 08:53:46,289 ERROR [AWT-EventQueue-0] - at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
2017-sty-20 08:53:46,289 ERROR [AWT-EventQueue-0] - at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
2017-sty-20 08:53:46,289 ERROR [AWT-EventQueue-0] - at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
2017-sty-20 08:53:46,289 ERROR [AWT-EventQueue-0] - at java.awt.EventDispatchThread.run(Unknown Source)
2017-sty-20 08:53:46,305 ERROR [AWT-EventQueue-0] - Caused by: java.lang.invoke.LambdaConversionException: Type mismatch for lambda argument 1: class com.goodsoft.stockbox.commons.model.c is not convertible to int
2017-sty-20 08:53:46,305 ERROR [AWT-EventQueue-0] - at java.lang.invoke.AbstractValidatingLambdaMetafactory.validateMetafactoryArgs(Unknown Source)
有趣的错误日志是:
Caused by: java.lang.invoke.LambdaConversionException: Type mismatch for lambda argument 1: class com.goodsoft.stockbox.commons.model.c is not convertible to int
...所以也许 Lambda 没有问题,但是 lambda 使用的屏蔽对象没有问题?
方法之前更改为 lambda 看起来像(工作正常):
bidAskDiffChangeObserver = new BidAskDiffChangeObserver(instrument,
new IDiffValueChangeDelegate() {
@Override
public void valueChanged(int newValue, ValueChangeType type) {
mainRangeAxis.updateSpread(newValue);
}
});
...和 AFTER 更改为 Lambda 表达式(不起作用):
bidAskDiffChangeObserver = new BidAskDiffChangeObserver(instrument,
(newValue, type) -> mainRangeAxis.updateSpread(newValue));
调用者:
int newValue = computeBidAskDifference();
ValueChangeType type = previousValue > newValue ? ValueChangeType.DROP :
previousValue < newValue ? ValueChangeType.GROWTH : ValueChangeType.EQUAL;
if (delegate != null)
delegate.valueChanged(newValue, type);
我应该使用哪个选项来添加 lambda 条件?
没有屏蔽一切工作正常(使用选项-dontoptimize
)。
我在 pom.xml 中的 proguard 选项现在看起来像这样:
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.10</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>proguard</goal>
</goals>
</execution>
</executions>
<configuration>
<injar>StockBox.jar</injar>
<outjar>StockBox.jar</outjar>
<options>
<option>-allowaccessmodification</option>
<option>-keepdirectories</option>
<option>-keep public class com.goodsoft.stockbox.Main { *; }</option>
<option>-keep public class * implements
com.goodsoft.stockbox.base.model.config.IConvertibleConfiguration
{ *;}
</option>
<option>-dontskipnonpubliclibraryclasses</option>
<option>-dontskipnonpubliclibraryclassmembers</option>
<option>-keepattributes RuntimeVisibleAnnotations</option>
<option>-keep @javax.persistence.* class * { *;}</option>
<option>-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
</option>
<option>-keep @org.springframework.context.annotation.Configuration class *</option>
<option>-keep @org.springframework.beans.factory.annotation.Service class *</option>
<option>-keep @org.springframework.stereotype.Component class *</option>
<option>-keepclassmembers class * {
@org.springframework.beans.factory.annotation.Autowired *;
@org.springframework.beans.factory.annotation.Value *;
@org.springframework.context.annotation.Bean *;
}
</option>
<option>-adaptresourcefilecontents **.properties</option>
<option>-keepattributes
Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
</option>
</options>
<maxMemory>512m</maxMemory>
<libs>
<lib>${java.home}/lib/rt.jar</lib>
<lib>${java.home}/lib/jce.jar</lib>
</libs>
</configuration>
<dependencies>
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard-base</artifactId>
<version>${proguard.version}</version>
</dependency>
</dependencies>
</plugin>
编辑
我尝试将 Maven 选项添加为 -optimizations !method/removal/parameter
和 -optimizations !method/marking/static
但没有帮助。
最佳答案
已解决
优化将枚举更改为整数时存在问题。
只需关闭此优化即可正常工作。
<option>-optimizations !class/unboxing/enum</option>
关于java - Proguard Maven 使用 Lambda 表达式屏蔽错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41761452/
我需要创建一个 View (作为其他 View 的 mask ) 。圆圈是透明的,外部区域是半透明的。我可以使用 canvas.clipRegion(..) 来实现它,但是 http://develo
踏入爬虫的迷宫 多年以来,我一直是一个对编程充满了好奇心的人。探索着代码的世界,便如同探险家踏入密林深处,寻找未知的宝藏。最近,我将目光聚焦在了爬虫技术上,特别是百度搜索屏蔽问题上。 百度搜索的诱惑
我想将“www.adomain.com”重定向到“www.adomain.com/cms”。 cms 部分应该被屏蔽。 我无法让它安静地工作。因此“cms”始终是网址的一部分。 我尝试了这个解决方案:
我一直在我的 View Controller 中使用以下代码: UIView *view = [[CustomView alloc] init]; UIView *mask = [[CustomMas
如果是网页内容里面的alert,我们可以等网页加载完毕,也就是在webViewDidFinishLoad中执行下面的js代码,就可以屏蔽alert了
我正在使用 PyQt4 QLineEdit小部件接受密码。有一个setMasking属性,但不遵循如何设置屏蔽字符。 最佳答案 editor = QLineEdit() editor.setEchoM
我有一个包含员工信息的 Pandas 数据框,如下所示: df=pd.DataFrame({ 'Id':[1,2,3,4], 'Name':['Joe','Henry','Sam','
我正在为 iPhone 创建一个自定义开/关切换开关(类似于标准开关),并且我正在设置 slider 的蒙版,但调用 [[myView [layer] setMask:maskLayer] 设置
我如何能够在 Objective C 中屏蔽 nsimageview?例如,有一个带圆角的 nsimageview。 最佳答案 你不知道。如果你想以 NSImageView 不支持的方式绘制图像,则需
我正在开发一个可以更改边框或矩形 UIImage 的应用程序。边框会有所不同,但看起来 UIImage 是用剪刀剪掉的,或者有什么影响。 做到这一点的最佳方法是什么? 我的第一个想法是准备一堆具有我正
我需要屏蔽数据,就像在 Azure Pipelines 中一样,但位于 Azure 存储库文件内。有没有一种方法可以设置与脚本分开存储的变量,例如在 Azure 管道中: variable = $(S
我没有找到解决问题的简单方法。我想使用 TextInputDialog,您必须在其中键入用户密码,以重置数据库中的所有数据。 TextInputDialog 的问题是它没有屏蔽文本,我不知道有什么选择
我正在寻找一种自行开发的方法来扰乱生产数据以用于开发和测试。我已经构建了几个脚本来生成随机社会安全号码、轮类出生日期、打乱电子邮件等。但我在尝试打乱客户姓名时遇到了困难。我想保留真实姓名,这样我们仍然
我正在尝试使用过滤器来屏蔽 SSN 的前 5 位数字,它应该看起来像这样 XXX-XX-1234 到目前为止我想出了什么: // {{SocialSecurityNumber | ssn}} angu
我没有找到解决问题的简单方法。我想使用 TextInputDialog,您必须在其中键入用户密码,以重置数据库中的所有数据。 TextInputDialog 的问题是它没有屏蔽文本,我不知道有什么选择
我想屏蔽一个 Fortran 数组。这是我目前正在做的方式...... where (my_array <=15.0) mask_array = 1 elsewhere mask_ar
当用户在用户界面上输入时,我需要屏蔽数字,用户应该看到一个屏蔽的数字,但在 Java 代码上,我应该得到整个数字,包括屏蔽的字符用户应该看到什么 4545********9632但在 Java 代码(
我正在使用 javafx 文本字段。我需要输入数字以及应符合格式 ###.###.###.### 的小数其中小数点根本不可编辑,数字可以是任何数字;不允许其他输入。并非所有数字占位符都需要填写,例如它
我必须交付一个小型 C++ 软件。我想用一些实现(我使用了表达式模板)来掩盖头文件,以使最终用户难以辨认,因此他们无法修改它们。我无法将代码包含在静态或动态库中。有什么方法可以屏蔽头文件的内容吗? 谢
我正在开发一个与 gestureRecognizer 配合使用的应用程序。 使用手势可以选择 UIImage(例如 rectangle.png),并且可以使用 UIPopoverView 通过为所选图
我是一名优秀的程序员,十分优秀!