小编Iro*_*uca的帖子

Java8 java.util.Date转换为java.time.ZonedDateTime

尝试转换为时java.util.Date,我收到以下异常java.time.LocalDate.

java.time.DateTimeException: Unable to obtain ZonedDateTime from TemporalAccessor: 2014-08-19T05:28:16.768Z of type java.time.Instant
Run Code Online (Sandbox Code Playgroud)

代码如下:

public static Date getNearestQuarterStartDate(Date calculateFromDate){

    int[] quaterStartMonths={1,4,7,10};     
    Date startDate=null;

    ZonedDateTime d=ZonedDateTime.from(calculateFromDate.toInstant());
    int frmDateMonth=d.getMonth().getValue();
Run Code Online (Sandbox Code Playgroud)

我使用ZonedDateTime课程的方式有问题吗?

根据文档,这应该将java.util.Date对象转换为ZonedDateTime.上面的日期格式是标准日期?

我是否必须回到Joda时间?

如果有人可以提供一些建议,那就太好了.

java datetime date java-8 java-time

62
推荐指数
3
解决办法
5万
查看次数

使用Java Bean Validation验证String数组的元素

我有一个简单的类,它的一个属性是String数组.根据这个文档,在数组,集合等上使用@Valid将递归地验证数组/集合的每个元素.

@Valid
@Pattern(regexp="^[_ A-Za-z0-9]+$")
public String[] defaultAppAdminRoles;
Run Code Online (Sandbox Code Playgroud)

属性上面的注释会生成以下异常:

Exception in thread "main" javax.validation.UnexpectedTypeException: No validator could be found for type java.lang.String[]. See: @Pattern at public java.lang.String[] com.hm.vigil.platform.ops.model.Application.defaultAppAdminRoles
at org.apache.bval.jsr303.AnnotationProcessor.checkOneType(AnnotationProcessor.java:326)
at org.apache.bval.jsr303.AnnotationProcessor.getConstraintValidator(AnnotationProcessor.java:301)
at org.apache.bval.jsr303.AnnotationProcessor.applyConstraint(AnnotationProcessor.java:241)
at org.apache.bval.jsr303.AnnotationProcessor.processAnnotation(AnnotationProcessor.java:149)
at org.apache.bval.jsr303.AnnotationProcessor.processAnnotations(AnnotationProcessor.java:90)
at org.apache.bval.jsr303.Jsr303MetaBeanFactory.processClass(Jsr303MetaBeanFactory.java:134)
at org.apache.bval.jsr303.Jsr303MetaBeanFactory.buildMetaBean(Jsr303MetaBeanFactory.java:95)
at org.apache.bval.MetaBeanBuilder.buildForClass(MetaBeanBuilder.java:131)
at org.apache.bval.MetaBeanManager.findForClass(MetaBeanManager.java:102)
at org.apache.bval.jsr303.ClassValidator.validate(ClassValidator.java:140)
at com.hm.vigil.platform.commons.AbstractValidatable.isValid(AbstractValidatable.java:33)
at com.hm.vigil.platform.ops.model.Application.main(Application.java:54)
Run Code Online (Sandbox Code Playgroud)

我使用Apache BVal作为验证提供程序.

问题是,上述方法是否正确?

如果不正确,使用bean验证验证数组/集合的正确方法是什么?

如果它是正确的,那么它是Apache BVal的一些限制吗?

java bean-validation indexed-properties

5
推荐指数
2
解决办法
1万
查看次数

ActiveMQ 未从生产者处接收消息

我有一个 JMS 生产者和一个消费者,代理是 ActiveMQ,请参考下面的代码:

发件人代码

package activemq;

import javax.jms.ConnectionFactory;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;

public class PlatformNotifier {

public static void main(String[] args) throws Exception{

    ConnectionFactory connectionFactory=new ActiveMQConnectionFactory("tcp://localhost:61616");

    QueueConnection connection=(QueueConnection)connectionFactory.createConnection();
    connection.start();

    Session session=connection.createSession(true, Session.AUTO_ACKNOWLEDGE);

    Queue queue=session.createQueue("QUEUE.NOTIFICATION");

    MessageProducer producer=session.createProducer(queue);

    String message="from producer";
    TextMessage textMessage=session.createTextMessage(message);

    producer.send(textMessage);

    session.close();
    connection.stop();
    connection.close();

}//main closing

}//class closing
Run Code Online (Sandbox Code Playgroud)

接收者代码

package activemq;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.Session;

import org.apache.activemq.ActiveMQConnectionFactory;

public class ServiceNotifier {

public …
Run Code Online (Sandbox Code Playgroud)

java activemq-classic jms

3
推荐指数
1
解决办法
4451
查看次数