2016-08-31 2 views
-3

Java 응용 프로그램에 다음과 같은 문제가 있습니다.이 Date 객체를 생성자에 전달할 때이 IllegalArgumentException을 얻는 이유는 무엇입니까?

public class TirAliquotaRamoI { 

    private Date dataElaborazione; 
    private BigDecimal tassoLordoAnnuoAppl; 
    private BigDecimal tassoGiornalieroNetto; 
    private BigDecimal aliquota;    // Rappresenta il NAV 
    private Date dataInizio; 
    private Date dataFine; 
    private Date timeStamp; 

    public TirAliquotaRamoI() { 
     super(); 
     // TODO Auto-generated constructor stub 
    } 



    public TirAliquotaRamoI(Date dataElaborazione, BigDecimal tassoLordoAnnuoAppl, 
          BigDecimal tassoGiornalieroNetto, BigDecimal aliquota, 
          Date dataInizio, Date dataFine) { 
     super(); 
     this.dataElaborazione = dataElaborazione; 
     this.tassoLordoAnnuoAppl = tassoLordoAnnuoAppl; 
     this.tassoGiornalieroNetto = tassoGiornalieroNetto; 
     this.aliquota = aliquota; 
     this.dataInizio = dataInizio; 
     this.dataFine = dataFine; 
    } 

    ..................................................................... 
    ..................................................................... 
    GETTERS AND SETTERS 
    ..................................................................... 
    ..................................................................... 
} 

날짜 필드는 java.utils.Date :

나는이 클래스를 가지고있다.

그런 다음 다른 클래스에 나는이 방법으로 TirAliquotaRamoI 개체를 만드는 오전 :

TirAliquotaRamoI expectedResult = new TirAliquotaRamoI(
            new Date("2015-11-17 00:00:00"), 
            new BigDecimal("3.120000000"), 
            new BigDecimal("0.000049863"), 
            new BigDecimal("1.0000498630"), 
            new Date("2015-11-17 00:00:00"), 
            new Date("2015-11-17 00:00:00")); 

(나도 그 날짜 ("2015년 11월 17일 0시 0분 0초") 생성자 이것은 단 위 테스트 방법으로 만 사용됩니다).

문제는 그것이이 수행 될 때 :

java.lang.IllegalArgumentException 
    at java.util.Date.parse(Date.java:598) 
    at java.util.Date.<init>(Date.java:255) 
    at com.mycompany.main.AppTest.getNavInfoTest(AppTest.java:445) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at junit.framework.TestCase.runTest(TestCase.java:154) 
    at junit.framework.TestCase.runBare(TestCase.java:127) 
    at junit.framework.TestResult$1.protect(TestResult.java:106) 
    at junit.framework.TestResult.runProtected(TestResult.java:124) 
    at junit.framework.TestResult.run(TestResult.java:109) 
    at junit.framework.TestCase.run(TestCase.java:118) 
    at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:131) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 

이유 :

new Date("2015-11-17 00:00:00") 

이 나에게 이클립스 스택 트레이스에 다음과 같은 예외를 제공? 뭐가 잘못 되었 니? 내가 뭘 놓치고 있니? 이 문제를 어떻게 해결할 수 있습니까?

+0

당신의 테스트 클래스에'java.util.Date'도 가져 왔습니까? – Adam

+0

@AdamRosini : 분명히 그들은 스택 추적의 두 번째 줄을 보았습니다. –

+0

@ T.J.Crowder 사람들이 코드를 섞어서 출력하고 가능한 것으로 생각하는 것보다 더 많이 보았습니다 – Adam

답변

-1

당신은 그 생성자를 사용하지 않아야합니다.

잘못된 날짜 형식을 사용하고 있습니다. 올바른 문자열 예제 "Sat, 12 Aug 1995 13:30:00 GMT+0430". 자세한 내용은 JavaDoc Date.parse(String)

관련 문제