Java 8 &引用;路径不是功能接口“;Java类中的编译错误

Java 8 &引用;路径不是功能接口“;Java类中的编译错误,java-8,Java 8,当我尝试构建Java 1.8项目时,出现以下错误: COMPILATION ERROR : ------------------------------------------------------------- error: incompatible types: Path is not a functional interface 1 error 没有与错误相关联的行号,但是Netbeans在项目中的一个类的包声明下显示了红色的斜线。但该类甚至不使用路径。它在使用Path的同一个包中扩

当我尝试构建Java 1.8项目时,出现以下错误:

COMPILATION ERROR : 
-------------------------------------------------------------
error: incompatible types: Path is not a functional interface
1 error
没有与错误相关联的行号,但是Netbeans在项目中的一个类的包声明下显示了红色的斜线。但该类甚至不使用路径。它在使用Path的同一个包中扩展了一个抽象类(如果相关的话)


以前有人见过这个吗?关于如何解决这个问题有什么想法吗?

功能接口有一个“单一抽象方法”(SAM)。可能您正试图以要求路径为SAM的方式使用路径(例如,作为lambda),但路径不是SAM。

由于您没有发布任何代码,我不能肯定,但这看起来很相关。谷歌搜索这个错误让我明白了这一点,还有其他一些看起来很有用的东西。我不确定哪些代码对共享有用,但我愿意接受建议。我知道功能接口只能有一种方法,但我不知道为什么我的代码会出现这种情况。项目中没有用户定义的界面,无论是否具有功能。另外,错误似乎是说Path有问题,而不是我的一个类。在项目的其他地方,我导入了java.nio.file.Path,这是一个非功能接口。为什么编译器突然认为应该是相反的呢?试着使用命令行
javac
编译源文件,看看Netbeans配置内部是否有错误。这似乎是个好主意。但我真的没有看到这样的事情。如果我注释掉文件中Netbeans认为存在错误的所有内容,那么我可以毫无问题地构建项目。所以,不知何故,这个类甚至不使用Path导致了这个编译错误。我认为这就是导致问题的原因。一旦我确定Netbeans关于哪个类有错误是正确的,我就更仔细地研究了该代码。构造函数中有一些奇怪的东西。构造函数的一个参数没有正确连接到lambda表达式中提到的参数。我注意到lambda表达式中缺少了一个与其他内容相关的参数。当我修复它时,与lambda表达式中的参数相关的构造函数参数和错误消失了。不过,为了结束循环,所讨论的lambda表达式在任何地方都不使用Path,所以我仍然不理解为什么错误会以这种特殊的方式出现。奇怪。很难说没有看到任何代码,但我猜是因为某种原因,编译器推断你的lambda被用作路径。为了使函数式编程不再繁重(到处都是冗余类型),Java8在更多的地方添加了类型推断,如果您出错,这有时会导致令人困惑的编译错误。