gpt4 book ai didi

Java - XMLGregorianCalendar 异常

转载 作者:数据小太阳 更新时间:2023-10-29 01:57:31 26 4
gpt4 key购买 nike

我正在开发一个以 XML 形式来回调用的 Web 服务程序。然而,我的问题不在于此。当我在我的机器上本地(在 Eclipse 中)运行它时,它似乎可以工作。但是,当我的同事运行它时/如果我尝试在服务器上运行它,他甚至在调用 Web 服务之前就得到了这个异常:

ClientMain.java java.lang.IllegalArgumentException 中的异常#6:2012-07-09T08:19:44-0400

有谁知道为什么它会在一台机器上而不是另一台机器上进行争论?构建应该不是问题,因为我将整个 eclipse 工作区复制到拇指驱动器上(因此所有相关的 jar 和构建路径都应该保留下来)。就服务器运行而言,我将整个程序导出为可运行的 jar(运行 Eclipse Indigo)并遇到了类似的问题。

如有任何见解,我将不胜感激!

堆栈跟踪/输出:

java.lang.IllegalArgumentException: 2012-07-09T09:19:42-0400
at com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl$Parser.skip(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl$Parser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl.<init>(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl.newXMLGregorianCalendar(Unknown Source)
at com.travelport.worldspanimageserver.client.ClientMain.requestRun(ClientMain.java:231)******************************************************
Running by Yesterday's Date ...
2012-07-09T09:19:42-0400
Current date being used is 2012-07-09T09:19:42-0400
Exception #6 in ClientMain.java java.lang.IllegalArgumentException: 2012-07-09T09:19:42-0400

at com.travelport.worldspanimageserver.client.ClientMain.runTypeCheck(ClientMain.java:161)
at com.travelport.worldspanimageserver.client.ClientMain.main(ClientMain.java:81)
Exception #13 in ClientMain.java java.lang.NullPointerException

导致异常的方法:

    import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Properties;
import java.util.TimeZone;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.swing.text.Document;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;

import org.joda.time.format.DateTimeFormatter;
import org.joda.time.format.ISODateTimeFormat;

public static void requestRun(String strRunType) throws DatatypeConfigurationException{
//-TODO: determine how date is passed in/retrieved from database
GregorianCalendar c = new GregorianCalendar();

XMLGregorianCalendar dateTime = null;

if (strRunType == "fullLoad") {dateTime = null;}
if (strRunType.substring(0,2).equals("OD"))
{
System.out.println("Current date being used is " + DatatypeFactory.newInstance().newXMLGregorianCalendar(strRunType.substring(2,strRunType.length())));
dateTime = DatatypeFactory.newInstance().newXMLGregorianCalendar(strRunType.substring(2,strRunType.length()));
}
if (strRunType.substring(0,2).equals("DT"))
{
System.out.println("Current date being used is " + strRunType.substring(2,strRunType.length()));
dateTime = DatatypeFactory.newInstance().newXMLGregorianCalendar(strRunType.substring(2,strRunType.length()));
}

String address = "http://vhligssas001:31860/services/ImageViewerService"; /**getServiceURL(sServer);**/

try
{
ArrayList<PropertyType> propertyIdList = null;
ArrayList tempList = null;

if (strRunType.equals("properties"))
{
propertyIdList = getPropertiesFromFile(); //to fix later
}
else
{
propertyIdList = initialCall(dateTime, propertyIdList, address);
}

secondCall(propertyIdList, address);

}
catch(Exception e)
{
System.out.println("Exception #5 in ClientMain.java " + e);
try
{
postMail("Exception #5 in ClientMain.java " + e);
}
catch (Exception e1)
{
e1.printStackTrace();
}
System.exit(16);
}
}
catch(Exception e)
{
System.out.println("Exception #6 in ClientMain.java " + e);
try
{
postMail("Exception #6 in ClientMain.java " + e);
e.printStackTrace(); //added

}
catch (Exception e1)
{
e1.printStackTrace();
}
System.exit(16);
}
}

主类:

    public static void main(String args[]) throws Exception 
{
String sRunType = new String("");
try
{
File fPropertiesToLoad = new File("runType.txt");
BufferedReader in = null;
String strRunType = new String("");

if (!fPropertiesToLoad.exists())
{
System.out.println("******************************************************");
System.out.println("Exception #1 - Run Type file does not exist");
System.out.println("******************************************************");
postMail("Exception #1 - Run Type file does not exist");
System.exit(16);
}
else
{
in = new BufferedReader(new FileReader("runType.txt"));
if ((strRunType = in.readLine()) != null)
{
sRunType = strRunType.trim();
}
in.close();
runTypeCheck(sRunType);
}
}
catch (Exception e)
{
System.out.println("Exception #2 in ClientMain.java " + e);
postMail("Exception #2 in ClientMain.java " + e);
System.exit(16);
}
}

运行类型检查:

    public static void runTypeCheck(String sRunType)
{
try
{
//Hard-coded in "yesterday" as the date
sRunType = "DT";

System.out.println("******************************************************");
DateTimeFormatter parser2 = ISODateTimeFormat.dateTimeNoMillis();

if (sRunType.equals("DT"))
{
System.out.println("Running by Yesterday's Date ...");
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1);
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
sRunType = dateFormat.format(cal.getTime());
System.out.println(sRunType);
sRunType = sRunType.replaceAll("-0500", "-05:00");
sRunType = "DT" + sRunType;
requestRun(sRunType);
}
System.out.println("******************************************************");

}
catch(Exception e)
{
System.out.println("Exception #4 in ClientMain.java " + e);
try
{
postMail("Exception #4 in ClientMain.java " + e);
}
catch (Exception e1)
{
e1.printStackTrace();
}
System.exit(16);
}
}

只输出:

******************************************************

Running by Yesterday's Date ...

2012-07-09T08:19:44-0400

Current date being used is 2012-07-09T08:19:44-0400

Exception #6 in ClientMain.java java.lang.IllegalArgumentException: 2012-07-09T08:19:44-0400

最佳答案

问题是您从 strRunType.substring(2,strRunType.length()) 获得的“日期”不是日期的有效 lexicalRepresentation .

您需要正确设置输入值的格式才能解析为 XMLGregorianCalendar 对象。

错误是您在日期的 -04:00 中缺少 :

由于 sRunType = sRunType.replaceAll("-0500", "-05:00"); 代码,您一定已经知道了...除了您使用的是 5 而不是一个 4?

关于Java - XMLGregorianCalendar 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11413670/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com