GVKun编程网logo

IllegalArgumentException:The observer is null的解决方法(observation error)

2

想了解IllegalArgumentException:Theobserverisnull的解决方法的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于observationerror的相关问题

想了解IllegalArgumentException:The observer is null的解决方法的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于observation error的相关问题,此外,我们还将为您介绍关于android – java.lang.IllegalArgumentException:指定为非null的参数为null:方法kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull、Caused by: java.lang.IllegalArgumentException: Negative time、Caused by: java.lang.IllegalArgumentException: The servlets the url-pattern which is not permitted、ConsumerAwareMessageListener 抛出 IllegalArgumentException的新知识。

本文目录一览:

IllegalArgumentException:The observer is null的解决方法(observation error)

IllegalArgumentException:The observer is null的解决方法(observation error)

ViewPager中包含的页面如果有用到ListView。当从ViewPage页面退出应用时报java.lang.IllegalArgumentException: The observer is null.错误。这是因为

ViewPager在移除View时会调用ListView的unregisterDataSetObserver方法,而ListView本身也会调用该方法,所以在第二次调用时就会报“The observer is null”错误。

解决办法:

复写ListView的Adapter的unregisterDataSetObserver方法,对空指针进行判断即可

@Override
 public void unregisterDataSetObserver(DataSetObserver observer) {
  if(observer != null){
   super.unregisterDataSetObserver(observer);
  }
 }


android – java.lang.IllegalArgumentException:指定为非null的参数为null:方法kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull

android – java.lang.IllegalArgumentException:指定为非null的参数为null:方法kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull

我收到了这个错误

java.lang.IllegalArgumentException:指定为非null的参数为null:方法kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull,参数事件

为线

覆盖fun onEditorAction(v:TextView,actionId:Int,event:KeyEvent)

以下是整个代码.这段代码最初是在java中,我使用Android Studio将其转换为Kotlin,但现在我收到了这个错误.我尝试重建和清理项目,但这没有用.

val action = supportActionBar //get the actionbar
action!!.setdisplayShowCustomEnabled(true) //enable it to display a custom view in the action bar.
action.setCustomView(R.layout.search_bar)//add the custom view
action.setdisplayShowTitleEnabled(false) //hide the title

edtSearch = action.customView.findViewById(R.id.edtSearch) as EditText //the text editor


//this is a listener to do a search when the user clicks on search button
edtSearch?.setonEditorActionListener(object : TextView.OnEditorActionListener {
    override fun onEditorAction(v: TextView,actionId: Int,event: KeyEvent): Boolean {
    if (actionId == EditorInfo.IME_ACTION_SEARCH) {
         Log.e("TAG","search button pressed")  //doSearch()
         return true
        }
     return false
    }
})

解决方法

最后一个参数可以为null,如 docs所述:

KeyEvent: If triggered by an enter key,this is the event; otherwise,this is null.

所以你需要做的就是让Kotlin类型为空可以解释这个问题,否则注入的null检查会在你的应用程序获得一个带有null值的调用时崩溃,就像你已经看到它一样:

edtSearch?.setonEditorActionListener(object : TextView.OnEditorActionListener {
    override fun onEditorAction(v: TextView,event: KeyEvent?): Boolean {
        ...
    }
})

有关this answer平台类型的更多说明.

Caused by: java.lang.IllegalArgumentException: Negative time

Caused by: java.lang.IllegalArgumentException: Negative time

问题

最近在部署war应用的时候,出现如下错误:

Caused by: java.lang.IllegalArgumentException: Negative time

原因

windows server 2003 在复制war文件的时候,把要被复制的文件的修改时间变成1940年。

解决

先将war在本地压缩成zip文件,然后,上传这个zip文件到服务器,然后,在服务器上面解压zip文件,这样在win上面得到war文件修改时间就没有被修改。

参考

  • 如何复制文件夹而不改变修改时间?

Caused by: java.lang.IllegalArgumentException: The servlets the url-pattern which is not permitted

Caused by: java.lang.IllegalArgumentException: The servlets the url-pattern which is not permitted

Caused by: java.lang.IllegalArgumentException: The servlets named [ServletDemo] and [day05.ServletDemo] are both mapped to the url-pattern [/ServletDemo] which is not permitted

应该是 /ServletDemo 一个请求映射了 [ServletDemo] and [day05.ServletDemo] 两个servlet 

找到原因了
是因为在类定义上面:
@WebServlet("/ServletDemo")//这里
public class ServletDemo extends HttpServlet {
不需要再在web.xml中定义servlet属性了。

ConsumerAwareMessageListener 抛出 IllegalArgumentException

ConsumerAwareMessageListener 抛出 IllegalArgumentException

如何解决ConsumerAwareMessageListener 抛出 IllegalArgumentException?

我有一个用例,我想使用 Consumer 对象,因此,我正在使用这个

@Slf4j
@Service
@Scope(value = Configurablebeanfactory.ScopE_PROTOTYPE)
public class MyMessageListener extends AbstractConsumerSeekAware implements ConsumerAwareMessageListener<String,String> {

    @Override
    public void onMessage(ConsumerRecord<String,String> consumerRecord,Consumer<?,?> consumer) {
        
        consumer.pause(Collections.singleton(new TopicPartition(consumerRecord.topic(),consumerRecord.partition())));
    }

}

但是每次我向主题发送消息时,我都会收到一个 IllegalArgumentException,我认为这是因为 Consumer 对象而发生的。

这是我的监听器容器 -

@Autowired
private MyMessageListener myMessageListener;

public KafkaMessageListenerContainer<String,String> createContainer(String topic) {
        ContainerProperties containerProperties = new ContainerProperties(topic);
        ConsumerFactory<String,String> consumerFactory = new DefaultKafkaConsumerFactory<>(consumerProperties());
        KafkaMessageListenerContainer<String,String> listenerContainer = new KafkaMessageListenerContainer<>(consumerFactory,containerProperties);
        listenerContainer.getContainerProperties().setMessageListener(myMessageListener);
        listenerContainer.getContainerProperties().setGroupId(UUID.randomUUID().toString());
        listenerContainer.setAutoStartup(false);
        return listenerContainer;
    }



 private Map<String,Object> consumerProperties(){
        Map<String,Object> props = new HashMap<>();
        props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONfig,this.constants.getKafkaBootstrapAddress());
        props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONfig,StringDeserializer.class);
        props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONfig,StringDeserializer.class);
        props.put(ConsumerConfig.MAX_POLL_RECORDS_CONfig,"1");
        props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONfig,"latest");
        return props;
    }

为什么会这样?

编辑 1

org.springframework.kafka.listener.ListenerExecutionFailedException: Listener Failed; nested exception is java.lang.IllegalArgumentException: Unrecognized Type: [null]
    at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.decorateException(KafkaMessageListenerContainer.java:2361) ~[spring-kafka-2.7.0.jar:2.7.0]
    at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeErrorHandler(KafkaMessageListenerContainer.java:2346) ~[spring-kafka-2.7.0.jar:2.7.0]
    at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeRecordListener(KafkaMessageListenerContainer.java:2220) ~[spring-kafka-2.7.0.jar:2.7.0]
    at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doInvokeWithRecords(KafkaMessageListenerContainer.java:2134) ~[spring-kafka-2.7.0.jar:2.7.0]
    at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeRecordListener(KafkaMessageListenerContainer.java:2016) ~[spring-kafka-2.7.0.jar:2.7.0]
    at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeListener(KafkaMessageListenerContainer.java:1702) ~[spring-kafka-2.7.0.jar:2.7.0]
    at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.invokeIfHaveRecords(KafkaMessageListenerContainer.java:1272) ~[spring-kafka-2.7.0.jar:2.7.0]
    at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.pollAndInvoke(KafkaMessageListenerContainer.java:1264) ~[spring-kafka-2.7.0.jar:2.7.0]
    at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.run(KafkaMessageListenerContainer.java:1161) ~[spring-kafka-2.7.0.jar:2.7.0]
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[na:na]
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
    at java.base/java.lang.Thread.run(Thread.java:832) ~[na:na]

解决方法

你用的是什么版本?你能提供一个复制它的小应用程序吗?我刚刚测试了它,首先使用 Boot 的自动配置容器工厂,然后使用您的代码,两者都适合我(最新的 Boot 2.4.5)。

@SpringBootApplication
public class So67301285Application {

    public static void main(String[] args) {
        SpringApplication.run(So67301285Application.class,args);
    }

    @Bean
    ConcurrentMessageListenerContainer<String,String> container(
            ConcurrentKafkaListenerContainerFactory<String,String> factory,ConsumerAwareMessageListener<String,String> listener) {

        ConcurrentMessageListenerContainer<String,String> container = factory.createContainer("so67301285");
        container.getContainerProperties().setMessageListener(listener);
        container.getContainerProperties().setGroupId("so67301285");
        return container;
    }

    @Bean
    public NewTopic topic() {
        return TopicBuilder.name("so67301285").partitions(1).replicas(1).build();
    }

    @Bean
    public KafkaMessageListenerContainer<String,String> createContainer(Listener listener) {
        ContainerProperties containerProperties = new ContainerProperties("so67301285");
        ConsumerFactory<String,String> consumerFactory = new DefaultKafkaConsumerFactory<>(consumerProperties());
        KafkaMessageListenerContainer<String,String> listenerContainer = new KafkaMessageListenerContainer<>(
                consumerFactory,containerProperties);
        listenerContainer.getContainerProperties().setMessageListener(listener);
        listenerContainer.getContainerProperties().setGroupId("so67301285-1");
        listenerContainer.setAutoStartup(true);
        return listenerContainer;
    }

    private Map<String,Object> consumerProperties() {
        Map<String,Object> props = new HashMap<>();
        props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG,"localhost:9092");
        props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG,StringDeserializer.class);
        props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG,StringDeserializer.class);
        props.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG,"1");
        props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG,false);
        props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG,"earliest");
        return props;
    }

}

@Component
class Listener extends AbstractConsumerSeekAware
        implements ConsumerAwareMessageListener<String,String> {

    @Override
    public void onMessage(ConsumerRecord<String,String> data,Consumer<?,?> consumer) {
        System.out.println(data.value() + "@" + data.offset() + "from group: " + KafkaUtils.getConsumerGroupId());
    }

}

结果:

foo@10from group: so67301285
foo@10from group: so67301285-1

我们今天的关于IllegalArgumentException:The observer is null的解决方法observation error的分享就到这里,谢谢您的阅读,如果想了解更多关于android – java.lang.IllegalArgumentException:指定为非null的参数为null:方法kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull、Caused by: java.lang.IllegalArgumentException: Negative time、Caused by: java.lang.IllegalArgumentException: The servlets the url-pattern which is not permitted、ConsumerAwareMessageListener 抛出 IllegalArgumentException的相关信息,可以在本站进行搜索。

本文标签: