jbot icon indicating copy to clipboard operation
jbot copied to clipboard

jbot slack + spring boot

Open cicero-barros opened this issue 8 years ago • 5 comments

I'm trying to user jbot with Spring Boot but i'm getting this error when a run the project

Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled. 2017-09-20 15:24:11.880 ERROR 16508 --- [ restartedMain] o.s.b.d.LoggingFailureAnalysisReporter :


APPLICATION FAILED TO START


Description:

Field slackService in me.ramswaroop.jbot.core.slack.Bot required a bean of type 'me.ramswaroop.jbot.core.slack.SlackService' that could not be found.

Action:

Consider defining a bean of type 'me.ramswaroop.jbot.core.slack.SlackService' in your configuration.

cicero-barros avatar Sep 20 '17 18:09 cicero-barros

I think you didn't fork the project. If you can fork and commit your changes to your fork, I will be able to help. But from your error message, it seems, SlackService bean isn't created. It may be because you removed some annotation or the Spring config is incorrectly configured.

rampatra avatar Sep 21 '17 09:09 rampatra

Try configuring your spring boot application to scan for that package, something like: @SpringBootApplication(scanBasePackages = { "me.ramswaroop.jbot", "com.your.package" })

mmaxine avatar Sep 23 '17 05:09 mmaxine

Sorry to bump on this, however I have the same problem. By doing what suggested by @mmaxine , I get a new error:


org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'fbApiEndpoints': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'fbGraphApi' in value "${fbGraphApi}"
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:376)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1336)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:572)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:759)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:548)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:386)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
	at com.XXXXX.Application.main(Application.java:25)
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'fbGraphApi' in value "${fbGraphApi}"
	at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:172)
	at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:124)
	at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:237)
	at org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:211)
	at org.springframework.context.support.PropertySourcesPlaceholderConfigurer.lambda$processProperties$0(PropertySourcesPlaceholderConfigurer.java:175)
	at org.springframework.beans.factory.support.AbstractBeanFactory.resolveEmbeddedValue(AbstractBeanFactory.java:839)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1083)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:581)
	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:370)
	... 15 common frames omitted


Process finished with exit code 1

Zero functionality have been added in the project, besides the SlackBot class:

import me.ramswaroop.jbot.core.common.JBot;
import me.ramswaroop.jbot.core.slack.Bot;

@JBot
public class SlackBot extends Bot {
    @Override
    public String getSlackToken() {
        return null;
    }

    @Override
    public Bot getSlackBot() {
        return null;
    }
}

This was fixed by adding the default config.

The third problem is a null pointer exception.

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'slackBot': Invocation of init method failed; nested exception is java.lang.NullPointerException
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:139)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:416)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1686)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:573)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:759)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:548)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:386)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
	at com.XXXXX.xx.Application.main(Application.java:25)
Caused by: java.lang.NullPointerException: null
	at me.ramswaroop.jbot.core.slack.SlackService.connectRTM(SlackService.java:50)
	at me.ramswaroop.jbot.core.slack.Bot.startRTMAndWebSocketConnection(Bot.java:313)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:366)
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:309)
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:136)
	... 16 common frames omitted


Process finished with exit code 1

I'm clueless. (Update: Fixed!)

Apparently I had forgotten to include the RestTemplate bean part hidden in the main application java file.

    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    } 

ivanskodje avatar Feb 06 '19 10:02 ivanskodje

@ivanskodje @mmaxine @cicero-barros have you seen this error before? https://github.com/rampatra/jbot/issues/146

shshenG avatar Feb 15 '19 21:02 shshenG

HI, can you explain to me a little more, what was the solution for the fbApiEndpoints trouble?

lauraizco24 avatar Aug 27 '21 15:08 lauraizco24