pengrad / java-telegram-bot-api

Telegram Bot API for Java
https://core.telegram.org/bots
Apache License 2.0
1.8k stars 372 forks source link

Unable to invoke no-args constructor for class com.pengrad.telegrambot.model.User #222

Closed AlexRassvet closed 3 years ago

AlexRassvet commented 3 years ago

https://github.com/pengrad/java-telegram-bot-api/blob/db496e2302b11e2924ea7e52e9408bc2c4360277/library/src/main/java/com/pengrad/telegrambot/model/User.java#L22

Exception in thread "main" java.lang.RuntimeException: Unable to invoke no-args constructor for class com.pengrad.telegrambot.model.User. Registering an InstanceCreator with Gson for this type may fix this problem. at com.google.gson/com.google.gson.internal.ConstructorConstructor$14.construct(ConstructorConstructor.java:228) at com.google.gson/com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:212) at com.google.gson/com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131) at com.google.gson/com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222) at com.google.gson/com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131) at com.google.gson/com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222) at com.google.gson/com.google.gson.Gson.fromJson(Gson.java:932) at com.google.gson/com.google.gson.Gson.fromJson(Gson.java:897) at com.google.gson/com.google.gson.Gson.fromJson(Gson.java:846) at com.google.gson/com.google.gson.Gson.fromJson(Gson.java:817) at java.telegram.bot.api/com.pengrad.telegrambot.impl.TelegramBotClient.send(TelegramBotClient.java:72) at java.telegram.bot.api/com.pengrad.telegrambot.TelegramBot.execute(TelegramBot.java:42)

AlexRassvet commented 3 years ago

Only in com.github.pengrad:java-telegram-bot-api:5.0.0

pengrad commented 3 years ago

thanks for this @AlexRassvet, looking at it right now. What method did you execute?

pengrad commented 3 years ago

It should be fixed in 5.0.1 but i still can't rerpoduce it. @AlexRassvet do you mind sharing what method caused it and your jvm environment?

AlexRassvet commented 3 years ago

Run command: C:\jdk-15-AdoptOpenJDK\bin\java.exe --enable-preview -XX:+ShowCodeDetailsInExceptionMessages -agentlib:jdwp=transport=dt_socket,server=n,suspend=y,address=64238 --module-path C:\<path>\build\classes\java\main;C:\<path>\build\resources\main;c:\m2_repo\org\apache\logging\log4j\log4j-slf4j-impl\2.13.3\log4j-slf4j-impl-2.13.3.jar;c:\m2_repo\org\apache\logging\log4j\log4j-core\2.13.3\log4j-core-2.13.3.jar;c:\m2_repo\com\github\pengrad\java-telegram-bot-api\5.0.0\java-telegram-bot-api-5.0.0.jar;c:\m2_repo\com\google\guava\guava\28.1-jre\guava-28.1-jre.jar;c:\m2_repo\com\google\code\gson\gson\2.8.6\gson-2.8.6.jar;c:\m2_repo\org\apache\commons\commons-lang3\3.8.1\commons-lang3-3.8.1.jar;c:\m2_repo\commons-io\commons-io\2.7\commons-io-2.7.jar;c:\m2_repo\net\sf\supercsv\supercsv\2.4.0\supercsv-2.4.0.jar;c:\m2_repo\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;c:\m2_repo\org\apache\logging\log4j\log4j-api\2.13.3\log4j-api-2.13.3.jar;c:\m2_repo\com\squareup\okhttp3\logging-interceptor\3.12.10\logging-interceptor-3.12.10.jar;c:\m2_repo\com\squareup\okhttp3\okhttp\3.12.10\okhttp-3.12.10.jar;c:\m2_repo\com\google\guava\failureaccess\1.0.1\failureaccess-1.0.1.jar;c:\m2_repo\com\google\guava\listenablefuture\9999.0-empty-to-avoid-conflict-with-guava\listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar;c:\m2_repo\com\google\code\findbugs\jsr305\3.0.2\jsr305-3.0.2.jar;c:\m2_repo\org\checkerframework\checker-qual\2.8.1\checker-qual-2.8.1.jar;c:\m2_repo\com\google\errorprone\error_prone_annotations\2.3.2\error_prone_annotations-2.3.2.jar;c:\m2_repo\com\google\j2objc\j2objc-annotations\1.3\j2objc-annotations-1.3.jar;c:\m2_repo\org\codehaus\mojo\animal-sniffer-annotations\1.18\animal-sniffer-annotations-1.18.jar;c:\m2_repo\com\squareup\okio\okio\1.15.0\okio-1.15.0.jar --module telegram.bridge/org.alex.telegram.example.ReproduceBug222 -Dfile.encoding=windows-1251 -Duser.country=RU -Duser.language=ru -Duser.variantorg.alex.telegram.example.ReproduceBug222`

Code `package org.alex.telegram.example;

import com.pengrad.telegrambot.TelegramBot; import com.pengrad.telegrambot.request.SendMessage;

import java.util.Date;

public class ReproduceBug222 { public static void main(String[] args) { try { final int chatId = ...; TelegramBot bot = new TelegramBot("..."); bot.execute(new SendMessage(chatId, "Text 1" + new Date())); } catch (Exception e) { e.printStackTrace(); } } }`

Full stacktrace java.lang.RuntimeException: Unable to invoke no-args constructor for class com.pengrad.telegrambot.model.User. Registering an InstanceCreator with Gson for this type may fix this problem. at com.google.gson/com.google.gson.internal.ConstructorConstructor$14.construct(ConstructorConstructor.java:228) at com.google.gson/com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:212) at com.google.gson/com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131) at com.google.gson/com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222) at com.google.gson/com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131) at com.google.gson/com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222) at com.google.gson/com.google.gson.Gson.fromJson(Gson.java:932) at com.google.gson/com.google.gson.Gson.fromJson(Gson.java:897) at com.google.gson/com.google.gson.Gson.fromJson(Gson.java:846) at com.google.gson/com.google.gson.Gson.fromJson(Gson.java:817) at java.telegram.bot.api/com.pengrad.telegrambot.impl.TelegramBotClient.send(TelegramBotClient.java:72) at java.telegram.bot.api/com.pengrad.telegrambot.TelegramBot.execute(TelegramBot.java:42) at telegram.bridge/org.alex.telegram.example.ReproduceBug222.main(ReproduceBug222.java:13) Caused by: java.lang.UnsupportedOperationException: Cannot allocate class com.pengrad.telegrambot.model.User Caused by: java.lang.UnsupportedOperationException: Cannot allocate class com.pengrad.telegrambot.model.User

at com.google.gson/com.google.gson.internal.UnsafeAllocator$4.newInstance(UnsafeAllocator.java:104)
at com.google.gson/com.google.gson.internal.ConstructorConstructor$14.construct(ConstructorConstructor.java:225)
... 12 more
AlexRassvet commented 3 years ago

5.0.1 works. Thanks!