我在jGRASP中工作了一段时间,刚刚开始使用Java表达式。我可以用lambda表达式编译程序,但是当我试图运行它们时,我总是会得到以下错误:
没有在文件中找到主要方法、applet或MIDlets
示例程序:
public class SquareComputer {
interface IntegerMath {
int operation(int a);
}
public int operateUnary(int a, IntegerMath op) {
return op.operation(a);
}
public static void main(String... args) {
SquareComputer myApp = new SquareComputer();
System.out.println(myApp.operateUnary(3, a -> a*a));
}
}如果我注释掉最后一行,那么程序将按预期的方式编译和运行(当然,什么也不做)。
请注意,此程序是Oracle教程中计算器示例的缩减版本。如果我使用整个Calculator程序,那么同样的事情会发生:编译但是找不到要运行的主要方法;但是使用lambda表达式注释掉行,它就运行得很好。同样,对于我正在处理的另一个程序,使用lambda表达式编译的任何一行都会导致程序找不到主方法。
这是jGRASP,或者我的Java,或者我的理解,或者其他的问题吗?我怎么才能解决这个问题?
编辑:更多的几个数据点:如果我有jGRASP显示一个jGRASP图,则带有lambda表达式的类被唯一地标记为"External或Interface“(没有lambda表达式,它通常被标记为"Project”)。
如果我试图通过jGRASP创建一个JAR文件,使用正则表达式,jGRASP最初无法找到主类;但是一旦我指定它,JAR类就会生成,并且我可以在jGRASP之外成功地运行JAR类,这是我想要的行为。
发布于 2016-02-06 15:34:31
我使用的是过时版本的jGRASP (我相信,在2014年将lambda表达式引入Java之前,这是从2013年开始的)。将jGRASP安装更新到当前版本,解决了编译lambda表达式时查找主类的问题。
因此:是,jGRASP目前确实支持lambda表达式(至少通过2.0.1_09版本是这样)。但是没有,它没有在Java表达式出现之前(在2.0.0_03版本之后的某个时候)出现。
https://stackoverflow.com/questions/35238723
复制相似问题