Java lambda表达式和switch语句导致eclipse崩溃正常吗?

标签 java eclipse

我只是想不通是什么导致了 Eclipse 中的 stackoverflow 问题。其实我知道,但我不知道为什么。我试过以下方法:

  1. 重新启动我的电脑 - 呃
  2. Eclipse.exe -clean
  3. 重新安装了一个新的eclipse
  4. 每次都测试完全相同的代码,每次出现完全相同的代码都会使 Eclipse 崩溃。代码是一个 lambda 表达式。一切都很好,直到我按下句点键“。”用于 switch 语句中的代码完成。

我的代码是:

albumList.getSelectionModel().selectedItemProperty()
        .addListener((ObservableValue obs, AbstractAlbum oldAlbum, AbstractAlbum selectedAlbum) -> {
     switch (type){
         test. // It doesn't matter what variable I use, valid or not, after the dot, eclipse crashes       
     }
});

我找不到我的代码有什么问题。我在这里遵循了本教程:http://code.makery.ch/java/javafx-8-tutorial-intro/它也有一个 lambda 表达式。我试图向这段代码添加一个开关,但它又一次崩溃了:

lastNameColumn.setCellValueFactory(cellData -> {
    switch (type){
        test. // again it crashed after a dot
    }
});

有人可以确认他们是否可以复制这个吗?我正在使用全新的 Eclipse:Luna for java developer 64x - 最新的软件包。这是来自 eclipse 的日志:

!ENTRY org.eclipse.ui 4 0 2014-11-28 22:19:08.889
!MESSAGE Unhandled event loop exception
!STACK 0
org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.StackOverflowError)
    at org.eclipse.swt.SWT.error(SWT.java:4441)
    at org.eclipse.swt.SWT.error(SWT.java:4356)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:139)
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4147)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3764)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1151)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:148)
    at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:636)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:579)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:135)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
Caused by: java.lang.StackOverflowError
    at org.eclipse.jdt.internal.codeassist.UnresolvedReferenceNameFinder.visit(UnresolvedReferenceNameFinder.java:292)
    at org.eclipse.jdt.internal.compiler.ast.Block.traverse(Block.java:138)
    at org.eclipse.jdt.internal.compiler.ast.Initializer.traverse(Initializer.java:130)
    at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.traverse(TypeDeclaration.java:1427)
    at org.eclipse.jdt.internal.compiler.ast.QualifiedAllocationExpression.traverse(QualifiedAllocationExpression.java:603)
    at org.eclipse.jdt.internal.compiler.ast.LambdaExpression.traverse(LambdaExpression.java:645)
    at org.eclipse.jdt.internal.compiler.ast.MessageSend.traverse(MessageSend.java:1015)
    at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.traverse(MethodDeclaration.java:347)
    at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.traverse(TypeDeclaration.java:1434)
    at org.eclipse.jdt.internal.compiler.ast.QualifiedAllocationExpression.traverse(QualifiedAllocationExpression.java:603)
    at org.eclipse.jdt.internal.compiler.ast.LambdaExpression.traverse(LambdaExpression.java:645)
    at org.eclipse.jdt.internal.compiler.ast.MessageSend.traverse(MessageSend.java:1015)
    at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.traverse(MethodDeclaration.java:347)
    at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.traverse(TypeDeclaration.java:1434)
    at org.eclipse.jdt.internal.compiler.ast.QualifiedAllocationExpression.traverse(QualifiedAllocationExpression.java:603)
    at org.eclipse.jdt.internal.compiler.ast.LambdaExpression.traverse(LambdaExpression.java:645)
    at org.eclipse.jdt.internal.compiler.ast.MessageSend.traverse(MessageSend.java:1015)
    at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.traverse(MethodDeclaration.java:347)
    at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.traverse(TypeDeclaration.java:1434)
    at org.eclipse.jdt.internal.compiler.ast.QualifiedAllocationExpression.traverse(QualifiedAllocationExpression.java:603)

最佳答案

也许时间可以治愈所有的伤口? :-)

我使用 Eclipse Neon 3 并且所有内容都支持 Java 8 工作正常....

关于Java lambda表达式和switch语句导致eclipse崩溃正常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27188135/

相关文章:

java - 如何在 Glide 上显示 gif

java - eclipse调试器: enter a method without entering nested methods

Java Swing, JComboBox 下拉列表点击前改变监听器

java - 从返回奇怪字符的 URL 读取数据

Eclipse:在打开资源(和其他对话框)后重新聚焦主编辑器窗口

java - 使用 'PlatformUI.getWorkbench().restart()' 重新启动 Eclipse 不会重新启动 RCP 产品

java - 在 Eclipse Indigo 中没有从现有 Ant 构建文件导入 Java 项目的选项

Linux:Eclipse 内部网络浏览器不显示 html5 内容

java - 不使用camelproxy调用Camel JMS-Endpoint

java - RxJava Observable 出错时继续并获取状态