问题标签 [ecj]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 具有多个匹配目标类型的 lambda 表达式的方法签名选择
我在回答一个问题时遇到了一个我无法解释的场景。考虑这段代码:
我不明白为什么显式输入 lambda 的参数(A a) -> aList.add(a)
会使代码编译。此外,为什么它链接到重载 inIterable
而不是 in CustomIterable
?
对此是否有一些解释或指向规范相关部分的链接?
注意:仅在扩展iterable.forEach((A a) -> aList.add(a));
时编译(直接重载方法会导致模棱两可的错误)CustomIterable<T>
Iterable<T>
CustomIterable
两者兼得:
- openjdk 版本“13.0.2” 2020-01-14
Eclipse 编译器 - openjdk 版本“1.8.0_232”
Eclipse 编译器
编辑:上面的代码在使用 maven 构建时无法编译,而 Eclipse 成功编译了最后一行代码。
java - 在 Eclipse 4.15.0 中使用时插入 Java 14 文本块前导 \r\n
我正在学习如何处理 java 14(预览版)文本块。在 Junit 测试中使用以下文本块时,我遇到了以下意外功能(简化代码示例,在实际测试中我使用 HTML 片段):
执行此测试会导致错误,因为"\r\ntest"
不匹配"test"
:
当我查阅文档(https://docs.oracle.com/javase/specs/jls/se14/preview/specs/text-blocks-jls.html)时,它字面意思是:
文本块的内容是紧接在开始定界符的行终止符之后开始并在结束定界符的第一个双引号之前结束的字符序列。
我错过了什么?
几个问题和建议后更新:
我创建了一个小测试类:
它在执行时打印以下内容:
这个类的字节码是
java - 为什么 javac 为最终字段插入 Objects.requireNonNull(this)?
考虑以下类:
然后我编译和反编译这个类:
简而言之,javac
编译sum()
为:
在这里做什么Objects.requireNonNull(this)
?重点是什么?这是否与可达性有关?
Java 8 编译器类似。它插入this.getClass()
而不是Objects.requireNonNull(this)
:
我也尝试用 Eclipse 编译它。它不插入requireNonNull
:
所以这是 javac 特有的行为。
java - 在 Eclipse 中使用泛型密封接口
以下是合法的(即我可以编译它)并在启用预览功能的 Java 15 中工作(在 eclipse 2020-09 中)
Quantity.java
但是,日食在抱怨... permits QuantityImpl
。当悬停在QuantityImpl
一个可以阅读:
即使它编译,这是一个有效的投诉还是 eclipse 中的错误?
java - 错误 - 无法推断类型变量 K、V - OpenJDK 1.8 与 ECJ 1.8 与 lambda 的区别?
我有以下代码:
并且 eclipse 允许减少到(没有错误):
但是openJdk构建失败了
项目合规性设置为 1.8
版本:Openjdk 1.8.0-191
Eclipse 4.10
是欧洲法院的错误吗?
java - 如何将一个 Maven 插件的输出转换为另一个?
我目前在 Maven 中运行 Eclipse Java 编译器 (ECJ) 插件,以便扫描我的代码中的错误和警告。我想为 Maven 设计一个插件,它能够接收 ECJ 发现的所有错误和警告,以便解析它们。
我被困在如何阅读 ECJ 输出上。我的第一直觉是将它输出到一个文件并让我的插件读取该文件,但必须有更好的方法可以将 ECJ 输出传递到我的自定义插件中。
eclipse - 如何从 eclipse ecj 中的元素中获取 ast 树,如 javac 中的 JavacTrees.getTree(element)?
我写了一个自定义annotation Processor
,我希望在eclipse ecj编译器中获得ast 树:process
drools - Optaplanner - 部署项目时无法编译drools文件
我们使用 Java 11 开发了一个 SpringBoot 项目,optaplanner-core
并在 Drools 文件中定义规则。使用 JDK 在 intelliJ 中运行应用程序没有问题。
然后,我们将应用部署到安装了 JRE 的 Azure 应用服务上。我们收到以下错误:
我们尝试添加以下依赖项,但仍然出现相同的错误:
有人知道如何解决这个问题吗?
谢谢
java - Eclipse Java 编译器推断错误的泛型类型?
我想知道这是 ECJ 中的错误还是对 JLS 的有效解释。
Javac (11.0.11) 编译一切(我会说是正确的)。
ECJ (4.20.0) 无法编译getCollection2(HashSet::new)
调用并出现错误“类型不匹配:无法从集合转换为集合”。
对于getCollection(HashSet::new)
任何编译器来说,调用都不是问题。
如果我应用建议的快速修复并插入强制转换HashSet<Object>
,我会收到来自 ECJ 的不同错误:“在类型推断期间检测到问题:调用 getCollection2(GenericsTest.CollectionSupplier<Object,Collection>) 时出现未知错误”
这里有很多类似的问题和bugs.eclipse.org上的错误,但大多数示例似乎都涉及?
。