我对这个与为从 Maven 包导入的抽象类提供实现相关的 Kotlin 错误感到困惑。
我有一个用 Kotlin 编写的 Maven 库,并公开了一个名为 APIGatewayRequestHandler 的抽象类。在导入库的应用程序中,我提供了抽象类的实现:
class GetWelcomeMessageHandler : APIGatewayRequestHandler<WelcomeMessage>()
fun handleAPIGatewayRequest(input: com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent, context: com.amazonaws.services.lambda.runtime.Context?): WelcomeMessage {
return WelcomeMessage()
}
}
Run Code Online (Sandbox Code Playgroud)
从库中反编译的抽象类如下所示:
public abstract class APIGatewayRequestHandler<T> public constructor() : com.amazonaws.services.lambda.runtime.RequestHandler<com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent, T> {
public abstract fun handleAPIGatewayRequest(input: com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent, context: com.amazonaws.services.lambda.runtime.Context?): T
public open fun handleRequest(input: com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent?, context: com.amazonaws.services.lambda.runtime.Context?): T {
/* compiled code */
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Class 'GetWelcomeMessageHandler' is not abstract and does not implement abstract base class member
public abstract fun handleAPIGatewayRequest(input: APIGatewayProxyRequestEvent, …Run Code Online (Sandbox Code Playgroud) 我在Chrome中发出了一个XHR Post请求,它会立即返回一个错误类型的响应,没有详细信息.在Chrome中,响应状态显示为"已取消".但是,请求实际到达服务器并由服务器处理(使用断点进行验证).但是,在请求到达服务器之前,XHR错误响应和Chrome响应状态"已取消"发生.我正在测试使用本地网络服务器和应用服务器,其单一来源是"local.mydomain.com".所以没有跨领域的含义.什么可能导致这种行为?
使用 Spring MVC,我有以下设置:
我正在尝试使用 MDC(或 ThreadLocal 对象)为处理请求所涉及的所有组件收集上下文信息。
我可以从@Async 线程正确检索 MDC 上下文信息。但是,如果@Async 线程要将上下文信息添加到 MDC,我现在如何将 MDC 上下文信息编组到处理响应的线程?
任务装饰器
public class MdcTaskDecorator implements TaskDecorator {
@Override
public Runnable decorate(Runnable runnable) {
// Web thread context
// Get the logging MDC context
Map<String, String> contextMap = MDC.getCopyOfContextMap();
return () -> {
try {
// @Async thread context
// Restore the web thread MDC context
if(contextMap != null) {
MDC.setContextMap(contextMap);
}
else {
MDC.clear(); …Run Code Online (Sandbox Code Playgroud) 我无法在 JUnit 5 测试中初始化 @Autowired 成员。这是测试:
import org.amshove.kluent.`should be equal to`
import org.junit.Test
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.boot.test.context.TestConfiguration
import org.springframework.context.annotation.Bean
@SpringBootTest
class SnackQueryResolverTest {
@TestConfiguration
class SnackQueryResolverTestConfig {
@Bean
fun snackQueryResolverFactory() = SnackQueryResolver()
}
@Autowired
private lateinit var snackQueryResolver: SnackQueryResolver
@Test
fun `snacks`() {
val snacks = snackQueryResolver.snacks()
snacks.size `should be equal to` 5
}
}
Run Code Online (Sandbox Code Playgroud)
运行测试时我收到错误:
kotlin.UninitializedPropertyAccessException: lateinit property snackQueryResolver has not been initialized
Run Code Online (Sandbox Code Playgroud)
如果我消除 @Autowired 并在构造期间实例化 bean,则测试运行良好:
@SpringBootTest
class SnackQueryResolverTest {
private val snackQueryResolver: SnackQueryResolver = SnackQueryResolver() …Run Code Online (Sandbox Code Playgroud) 在用 Kotlin 编写的 AWS Lambda(即不是 Android)中使用 DynamoDBMapper,我可以使用数据类保存记录。但是,当我尝试将记录加载到数据类时,我收到“DynamoDBMappingException:无法实例化类”异常。
@DynamoDBTable(tableName = "Test")
data class TestItem(
@DynamoDBHashKey(attributeName="someKey")
@DynamoDBAttribute(attributeName = "someKey")
var someKey: String?,
@DynamoDBAttribute(attributeName = "someValue")
var someValue: String?
}
val ddbMapper = DynamoDBMapper(AmazonDynamoDBClientBuilder.defaultClient())
ddbMapper.load(TestItem::class.java, "xyz")
Run Code Online (Sandbox Code Playgroud)
导致以下异常:
com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMappingException:无法实例化类 com.intuit.connect_to_pro.lambda_common_core.aws_service.TestItem
根例外是:
java.lang.NoSuchMethodException: com.intuit.connect_to_pro.lambda_common_core.aws_service.TestItem.()
AWS 有一个 Android 示例,它使用 com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMapper 而不是 com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper。我尝试了Android版本,但结果是一样的。
https://docs.aws.amazon.com/aws-mobile/latest/developerguide/add-aws-mobile-nosql-database.html
任何帮助,将不胜感激。
我似乎不知道如何对通过平台通道从 Flutter 应用程序调用的本机 Android 模块进行调试。我正在使用 Flutter 文档中的示例(https://flutter.dev/docs/development/platform-integration/platform-channels)。我尝试过以下方法:
我究竟做错了什么?
kotlin ×3
ajax ×1
android ×1
autowired ×1
aws-lambda ×1
flutter ×1
javascript ×1
junit5 ×1
logback ×1
logging ×1
mdc ×1
slf4j ×1
spring-mvc ×1