Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java lambda表达式阻止类进行spring组件扫描_Java_Spring_Lambda_Functional Programming_Java 8 - Fatal编程技术网

Java lambda表达式阻止类进行spring组件扫描

Java lambda表达式阻止类进行spring组件扫描,java,spring,lambda,functional-programming,java-8,Java,Spring,Lambda,Functional Programming,Java 8,我们的应用程序使用@Component注释进行类测试。 这里使用Lambda表达式 @Component public class Test{ private ScheduledExecutorService schedulerExecutorService; private long timeoutForRollBack=180000; private long timeoutFailoverDelay=180000; publ

我们的应用程序使用@Component注释进行类测试。 这里使用Lambda表达式

    @Component
    public class Test{

      private ScheduledExecutorService schedulerExecutorService;
      private long timeoutForRollBack=180000;
      private long timeoutFailoverDelay=180000;
      public static Test getInstance() {
         if (INSTANCE == null) {
/*Actual instance will be created via reflection. using new for understanding */
             INSTANCE = new Test();
         }
        return INSTANCE;
      }
      public void handleFailOver(){
            schedulerExecutorService.scheduleWithFixedDelay(
                 () -> {
                           schedulerExecutorService.shutdown();                               
                        }, 
                  timeoutForRollBack, timeoutFailoverDelay, TimeUnit.MILLISECONDS);
      }

    }
但是这个测试类bean并没有被创建。但是当这个方法被注释时,测试类bean就被创建了

使用Java8Oracle和EclipseNeon2

建议是否需要任何更改来修复此问题

编辑1:


发现报告的类似问题:

编辑2:


面临的类似问题

附言:

如果

被私有的innerclass替换,这可以正常工作

private class TerminalScheduledExecutor implements Runnable{
@Override
        public void run() {
            schedulerExecutorService.shutdown();
        }
}.

但是,我们期待在不替换lambda函数的情况下找到解决方案。

最终找到了解决方案:

问题在于

org.reflections.reflections

版本。升级到

0.9.9-RC2

问题解决了

根据@OnurAktaş的建议,启用调试并发现

无法扫描org.reflections.reflection中发生的文件错误


您是否尝试更改spring框架的日志记录级别以获得详细的bean创建日志


根据此处的建议:

而不是一个片段发布完整的类。@M.Deinum我提供了修改后的代码片段。无法发布完整的类。让我用更详细的内容编辑帖子。我们已经尝试过了,但无法重现您在spring 4.2.6中遇到的问题,您使用的是哪个版本?@shizhz我们使用的是4.1.1.release我建议您整理一下代码-不需要getInstance()方法,而且schedulerExecutorService似乎没有被注入,因此它将为空。
private class TerminalScheduledExecutor implements Runnable{
@Override
        public void run() {
            schedulerExecutorService.shutdown();
        }
}.