程序包java.time不存在怎么解决?

Python014

程序包java.time不存在怎么解决?,第1张

jdk版本太低,java.time.LocalTime是java8新出的包。如果版本太低的话,比如jdk1.6,当然java.time不存在。换一个好版本的jdk!!\x0d\x0a\x0d\x0a为什么需要新的日期/日期API?\x0d\x0a在开始研究Java8日期/时间API之前,让我们先来看一下为什么我们需要这样一个新的API。在Java中,现有的与日期和时间相关的类存在诸多问题,其中有:\x0d\x0aJava的日期/时间类的定义并不一致,在java.util和java.sql的包中都有日期类,此外用于格式化和解析的类在java.text包中定义。\x0d\x0ajava.util.Date同时包含日期和时间,而java.sql.Date仅包含日期,将其纳入java.sql包并不合理。另外这两个类都有相同的名字,这本身就是一个非常糟糕的设计。\x0d\x0a对于时间、时间戳、格式化以及解析,并没有一些明确定义的类。对于格式化和解析的需求,我们有java.text.DateFormat抽象类,但通常情况下,SimpleDateFormat类被用于此类需求。\x0d\x0a所有的日期类都是可变的,因此他们都不是线程安全的,这是Java日期类最大的问题之一。\x0d\x0a日期类并不提供国际化,没有时区支持,因此Java引入了java.util.Calendar和java.util.TimeZone类,但他们同样存在上述所有的问题。\x0d\x0a在现有的日期和日历类中定义的方法还存在一些其他的问题,但以上问题已经很清晰地表明:Java需要一个健壮的日期/时间类。这也是为什么JodaTime在Java日期/时间需求中扮演了高质量替换的重要角色。\x0d\x0aJava8日期/时间API\x0d\x0aJava8日期/时间API是JSR-310的实现,它的实现目标是克服旧的日期时间实现中所有的缺陷,新的日期/时间API的一些设计原则是:\x0d\x0a不变性:新的日期/时间API中,所有的类都是不可变的,这对多线程环境有好处。\x0d\x0a关注点分离:新的API将人可读的日期时间和机器时间(unixtimestamp)明确分离,它为日期(Date)、时间(Time)、日期时间(DateTime)、时间戳(unixtimestamp)以及时区定义了不同的类。\x0d\x0a清晰:在所有的类中,方法都被明确定义用以完成相同的行为。举个例子,要拿到当前实例我们可以使用now()方法,在所有的类中都定义了format()和parse()方法,而不是像以前那样专门有一个独立的类。为了更好的处理问题,所有的类都使用了工厂模式和策略模式,一旦你使用了其中某个类的方法,与其他类协同工作并不困难。\x0d\x0a实用操作:所有新的日期/时间API类都实现了一系列方法用以完成通用的任务,如:加、减、格式化、解析、从日期/时间中提取单独部分,等等。\x0d\x0a可扩展性:新的日期/时间API是工作在ISO-8601日历系统上的,但我们也可以将其应用在非IOS的日历上。\x0d\x0a\x0d\x0a\x0d\x0aJava8日期/时间API包:\x0d\x0ajava.time包:这是新的Java日期/时间API的基础包,所有的主要基础类都是这个包的一部分,如:LocalDate,LocalTime,LocalDateTime,Instant,Period,Duration等等。所有这些类都是不可变的和线程安全的,在绝大多数情况下,这些类能够有效地处理一些公共的需求。\x0d\x0ajava.time.chrono包:这个包为非ISO的日历系统定义了一些泛化的API,我们可以扩展AbstractChronology类来创建自己的日历系统。\x0d\x0ajava.time.format包:这个包包含能够格式化和解析日期时间对象的类,在绝大多数情况下,我们不应该直接使用它们,因为java.time包中相应的类已经提供了格式化和解析的方法。\x0d\x0ajava.time.temporal包:这个包包含一些时态对象,我们可以用其找出关于日期/时间对象的某个特定日期或时间,比如说,可以找到某月的第一天或最后一天。你可以非常容易地认出这些方法,因为它们都具有“withXXX”的格式。\x0d\x0ajava.time.zone包:这个包包含支持不同时区以及相关规则的类。

报错如下;

org.apache.dubbo.rpc.RpcException: Failfast invoke providers dubbo://10.170.112.91:20772/com.fosun.health.open.api.PaymentChannelConfigService?anyhost=true&application=xxl-job-provider&check=false&cluster=failfast&deprecated=false&dubbo=2.0.2&dynamic=true&generic=true&group=cashier&interface=com.fosun.health.open.api.PaymentChannelConfigService&lazy=false&loadbalance=roundrobin&methods=getPayTypesByChannelId&pid=18420&qos.enable=false&register.ip=10.170.112.91&release=2.7.6&remote.application=cashier-center-core&retries=0&revision=1.0.0&side=consumer&sticky=false&timestamp=1609236320490&version=1.0.0 RoundRobinLoadBalance select from all providers [org.apache.dubbo.registry.integration.RegistryDirectory$InvokerDelegate@6ad43d32] for service org.apache.dubbo.rpc.service.GenericService method $invoke on consumer 10.170.112.91 use dubbo version 2.7.3, but no luck to perform the invocation. Last error is: Failed to invoke remote method: $invoke, provider: dubbo://10.170.112.91:20772/com.fosun.health.open.api.PaymentChannelConfigService?anyhost=true&application=xxl-job-provider&check=false&cluster=failfast&deprecated=false&dubbo=2.0.2&dynamic=true&generic=true&group=cashier&interface=com.fosun.health.open.api.PaymentChannelConfigService&lazy=false&loadbalance=roundrobin&methods=getPayTypesByChannelId&pid=18420&qos.enable=false&register.ip=10.170.112.91&release=2.7.6&remote.application=cashier-center-core&retries=0&revision=1.0.0&side=consumer&sticky=false&timestamp=1609236320490&version=1.0.0, cause: org.apache.dubbo.remoting.RemotingException: java.lang.NullPointerException

java.lang.NullPointerException

at org.apache.dubbo.rpc.filter.GenericFilter.invoke(GenericFilter.java:74)

at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:81)

at org.apache.dubbo.rpc.filter.ClassLoaderFilter.invoke(ClassLoaderFilter.java:38)

at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:81)

at org.apache.dubbo.rpc.filter.EchoFilter.invoke(EchoFilter.java:41)

at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:81)

at org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol$1.reply(DubboProtocol.java:145)

at org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.handleRequest(HeaderExchangeHandler.java:100)

at org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.received(HeaderExchangeHandler.java:175)

at org.apache.dubbo.remoting.transport.DecodeHandler.received(DecodeHandler.java:51)

at org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:57)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at java.lang.Thread.run(Thread.java:748)

at org.apache.dubbo.rpc.cluster.support.FailfastClusterInvoker.doInvoke(FailfastClusterInvoker.java:59)

at org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:248)

at org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker.invoke(MockClusterInvoker.java:78)

at org.apache.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:55)

at org.apache.dubbo.common.bytecode.proxy138.$invoke(proxy138.java)

at com.xxl.job.core.handler.impl.DubboJobHandler.execute(DubboJobHandler.java:73)

at com.xxl.job.core.thread.JobThread.run(JobThread.java:163)

根据报错提示找到该出源码:

是因为dubbo2.7.6版本 没有判断无参方法传null校验导致报空指针错误