Java 自动连线始终显示为空-Spring项目
我正在使用SpringBoot项目(带有H2DB)创建一个Discord机器人,我在这方面有一个小问题 我试图使用我的存储库类保存特定对象(Java 自动连线始终显示为空-Spring项目,java,spring,jpa,discord,Java,Spring,Jpa,Discord,我正在使用SpringBoot项目(带有H2DB)创建一个Discord机器人,我在这方面有一个小问题 我试图使用我的存储库类保存特定对象(MemberTributterepository.save(member)),但在放置自动连线批注时,我收到一个nullPointerException 有人能帮我吗 下面是代码的一些摘录: 存储库类 @Repository public interface MemberTributeRepository extends CrudRepository<
MemberTributterepository.save(member)
),但在放置自动连线批注时,我收到一个nullPointerException
有人能帮我吗
下面是代码的一些摘录:
存储库类
@Repository
public interface MemberTributeRepository extends CrudRepository<MemberTribute, Long> {
}
@存储库
公共接口MemberTributedepository扩展了Crudepository{
}
下面是我使用自动连线批注获取nullPointerException的类:
@Service
public class MemberTributeService {
@Autowired
MemberTributeRepository memberTributeRepository;
public String loadTributesFromApi() {
return ConectaApiAlbion.loadTributes();
}
public JSONArray processJsonFromApi() {
JSONArray jsonArray = new JSONArray(loadTributesFromApi());
return jsonArray;
}
public List<MemberTribute> buildListOfTributes() {
List<MemberTribute> listOfMemberTribute = new ArrayList<>();
for (int i = 0; i < processJsonFromApi().length(); i++) {
MemberTribute member = new MemberTribute();
member.setId(processJsonFromApi().getJSONObject(i).getString("Id"));
member.setGuildName(processJsonFromApi().getJSONObject(i).getString("GuildName"));
member.setName(processJsonFromApi().getJSONObject(i).getString("Name"));
Gathering gathering = buidingGathering(i);
member.setLifetimeStatistics(new LifetimeStatistics(gathering, LocalDateTime.now()));
listOfMemberTribute.add(member);
System.out.println("Salvando o membro: " + member.getName());
//NullPointer happens below, when i try to save my object 'member'
memberTributeRepository.save(member);
}
return listOfMemberTribute;
}
public Gathering buidingGathering(int i) {
Gathering gathering = new Gathering();
JSONObject PATH_TO_GATHERING = processJsonFromApi()
.getJSONObject(i)
.getJSONObject("LifetimeStatistics")
.getJSONObject("Gathering");
gathering.setTotalFibe(PATH_TO_GATHERING.getJSONObject("Fiber").getLong("Total"));
gathering.setTotalHide(PATH_TO_GATHERING.getJSONObject("Hide").getLong("Total"));
gathering.setTotalOre(PATH_TO_GATHERING.getJSONObject("Ore").getLong("Total"));
gathering.setTotalRock(PATH_TO_GATHERING.getJSONObject("Rock").getLong("Total"));
gathering.setTotalWood(PATH_TO_GATHERING.getJSONObject("Wood").getLong("Total"));
return gathering;
}
}
@服务
公共类成员属性服务{
@自动连线
成员贡献者贡献者贡献者贡献者贡献者贡献者贡献者贡献者贡献者贡献者贡献者贡献者贡献者贡献者贡献者贡献者贡献者贡献者贡献者贡献者贡献者贡献者贡献者贡献者贡献者贡献者贡献者贡献者贡献者贡献者;
公共字符串loadTributesFromApi(){
return ConectaApiAlbion.loadAttributes();
}
公共JSONArray进程JSONFROMAPI(){
JSONArray JSONArray=新的JSONArray(loadTributesFromApi());
返回jsonArray;
}
公共列表buildListOfTributes(){
List ListOfMemberAttribute=new ArrayList();
for(int i=0;i
现在,最后一个类是我用来调用MemberTributeService的类
@Component
public class Start extends ListenerAdapter {
private static String AUTHOR = "";
public static void jdaBuilder () throws LoginException {
JDA jda = JDABuilder.createDefault("xxxxxxxxxxxxxxxTOKENxxxxxxxxxxxxxxxxxx").build();
jda.addEventListener(new Start());
}
@Override
public void onMessageReceived(MessageReceivedEvent event) {
MemberTributeService service = new MemberTributeService();
AUTHOR = event.getAuthor().getName();
if (event.getAuthor().isBot()) return;
if (event.getMessage().getContentRaw().startsWith("/bot")) {
if (event.getMessage().getContentRaw().toLowerCase().contains("tributos")) {
event.getChannel().sendMessage("Eai " + AUTHOR + ", só de boas? ").queue();
List<MemberTribute> listMemberTribute = service.buildListOfTributes();
for (int i = 0; i < listMemberTribute.size(); i++) {
event.getChannel().sendMessage("-------------------\n" + "Nome: " + listMemberTribute.get(i).getName() +
"\nTotal Fiber: " + listMemberTribute.get(i).getLifetimeStatistics().getGathering().getTotalFibe() +
"\nTotal Ore: " + listMemberTribute.get(i).getLifetimeStatistics().getGathering().getTotalOre() +
"\n Total Wood: " + listMemberTribute.get(i).getLifetimeStatistics().getGathering().getTotalWood() +
"\n Total Rock: " + listMemberTribute.get(i).getLifetimeStatistics().getGathering().getTotalRock() +
"\n Total Hide: " + listMemberTribute.get(i).getLifetimeStatistics().getGathering().getTotalHide())
.queue();
}
} else {
event.getChannel().sendMessage("Opa.. " + AUTHOR + ", não reconheci seu comando." +
"\n tenta utilizar /bot antes! ").queue();
}
}
}
}
@组件
公共类开始扩展ListenerAdapter{
私有静态字符串AUTHOR=“”;
publicstaticvoidjdabuilder()抛出LoginException{
JDA JDA=JDABuilder.createDefault(“xxxxxxxxxxxxxxxxx令牌xxxxxxxxxxxxxxxx”).build();
addEventListener(newstart());
}
@凌驾
MessageReceived上的公共无效(MessageReceivedEvent事件){
MemberTributeService服务=新的MemberTributeService();
AUTHOR=event.getAuthor().getName();
if(event.getAuthor().isBot())返回;
if(event.getMessage().getContentRaw().startsWith(“/bot”)){
if(event.getMessage().getContentRaw().toLowerCase()包含(“tributos”)){
event.getChannel().sendMessage(“Eai”+作者+”,sóde boas?”).queue();
List ListMemberAttribute=service.buildListofAttribute();
对于(int i=0;i
在应用程序初始化期间,您的组件似乎没有被扫描。您对如何修复它有什么建议吗?我怀疑的是MemberTributterepository没有被初始化,因此您得到了NP异常。主类所在的包层次结构是否相同?它们位于不同的包中<代码>**Main**(包br.com.discordBot.tributes;)**Repository**(包br.com.discordBot.tributes.Repository;)
**MemberTributeService**(包br.com.discordBot.tributes.service;)
包含@SpringBootApplication
的主类在哪里?