我使用Windows 10,jdk1.8.0_111,Netbeans 8.0.1,apache-maven-3.6.2。我正在尝试向Netbeans打开optaplanner示例。
为此,当我在Netbeans中打开项目时,请转到文件
c:\ Program Files \ optaplanner \ examples \ sources。
(在我的系统中,我在sources文件夹中看到一个POM文件,但是NetBeans看到一个“ source”(POM?)文件)。我看到示例项目现在位于Netbeans项目área中。但是我无法跑步。
发生问题是因为Netbeans指向文件ConferenceSchedulingConstraintProvider.java
的一种方法中的错误。方法是
private Constraint talkPrerequisiteTalks(ConstraintFactory factory) {
return factory.from(Talk.class)
.join(Talk.class,
containing(Talk::getPrerequisiteTalkSet, Function.identity()),
lessThan(talk1 -> talk1.getTimeslot().getStartDateTime(),
talk2 -> talk2.getTimeslot().getEndDateTime()))
.penalizeConfigurable(TALK_PREREQUISITE_TALKS,
Talk::combinedDurationInMinutes);
}
请参阅以'.join(Talk.class'...)开始的行,消息指出:
联接的类型(类,BiJoiner,BiJoiner)是错误的 其中B,A是类型变量: B扩展在方法join(Class,BiJoiner,BiJoiner)中声明的对象 在接口UniConstraintStream中声明的扩展对象 不兼容的类型:无法推断类型变量B#1,A#2,B#2,Property_#1,T,A#3,B#3,Property_#2 (参数不匹配; BiJoiner不能转换为BiJoiner) 其中B#1,A#1,A#2,B#2,Property_#1,T,A#3,B#3,Property_#2是类型变量: B#1扩展了在方法join(Class,BiJoiner,BiJoiner)中声明的对象 A#1扩展了在接口UniConstraintStream中声明的对象 A#2扩展了在包含(Function>,Function
希望能有所帮助。 阿玛拉尔(Amaral)
答案 0 :(得分:1)
这是NetBeans中的错误,但是是一个非常老的,不再受支持的版本。
临时解决方法::下载最新的OptaPlanner发行版(7.29.0.Final或7.30.0.Final),其中提到的代码已被注释掉(Constraint Streams仍然是一个正在发展的功能)。 / p>
推荐的解决方案:从https://netbeans.apache.org/download/index.html下载并安装最新的NetBeans(11.2)。该问题在NetBeans 8.2中也已修复,但是也不再受支持。我建议使用最新版本。
答案 1 :(得分:0)
这是NetBeans中的一个严重错误。
这是有效的Java 8语法,可以在OpenJdK,Maven,Gradle,IntelliJ,VSCode,Eclipse等环境下正常工作。