引起:java.lang.IllegalArgumentException:坏类:类 java.lang.String

Posted

技术标签:

【中文标题】引起:java.lang.IllegalArgumentException:坏类:类 java.lang.String【英文标题】:Caused by: java.lang.IllegalArgumentException: Bad class: class java.lang.String 【发布时间】:2015-02-11 01:24:08 【问题描述】:

我正在尝试格式化从数据库表中检索到的日期,我想从“2015 02 11 12 00”格式化为“Feb 2”,但格式化时出现错误。还有其他格式化这些日期的方法吗?

按照代码:

protected String doInBackground(String... args) 
        // Building Parameters
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        // getting JSON string from URL
        JSONObject json = jParser.makeHttpRequest(url_all_events, "GET", params);

        // Check your log cat for JSON reponse
        Log.d("All events: ", json.toString());

        try 
            // Checking for SUCCESS TAG
            int success = json.getInt(TAG_SUCCESS);

            if (success == 1) 
                // events found
                // Getting Array of events
                events = json.getJSONArray(TAG_EVENTS);

                // looping through All events
                for (int i = 0; i < events.length(); i++) 
                    JSONObject c = events.getJSONObject(i);

                    // Storing each json item in variable
                    String id = c.getString(TAG_PID);
                    String eventname = c.getString(TAG_EVENTNAME);
                    String eventstart = c.getString(TAG_EVENTSTART);

                  String eventstartconvert = formatdate.format(eventstart); //this line gives an error.


                    // creating new HashMap
                    HashMap<String, String> map = new HashMap<String, String>();

                    // adding each child node to HashMap key => value
                    map.put(TAG_PID, id);
                    map.put(TAG_EVENTNAME, eventname);
                    map.put(TAG_EVENTSTART,eventstartconvert);

                    // adding HashList to ArrayList
                    eventsList.add(map);
                
            

这是我的日志:

02-11 09:14:40.997  25966-26198/com.example.jithea.testlogin E/androidRuntime﹕ FATAL EXCEPTION: AsyncTask #2
java.lang.RuntimeException: An error occured while executing doInBackground()
        at android.os.AsyncTask$3.done(AsyncTask.java:299)
        at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
        at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
        at java.util.concurrent.FutureTask.run(FutureTask.java:239)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
        at java.lang.Thread.run(Thread.java:838)
 Caused by: java.lang.IllegalArgumentException: Bad class: class java.lang.String
        at java.text.DateFormat.format(DateFormat.java:359)
        at java.text.Format.format(Format.java:93)
        at com.example.jithea.testlogin.EventsActivity$LoadAllevents.doInBackground(EventsActivity.java:137)
        at com.example.jithea.testlogin.EventsActivity$LoadAllevents.doInBackground(EventsActivity.java:91)
        at android.os.AsyncTask$2.call(AsyncTask.java:287)
        at java.util.concurrent.FutureTask.run(FutureTask.java:234)

           在 android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 在 java.lang.Thread.run(Thread.java:838)

【问题讨论】:

请发布异常的完整堆栈跟踪,以便我们知道从哪一行开始查看。 【参考方案1】:

你可以用这种格式来格式化日期......

DateFormat inputFormatter1 = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = inputFormatter1.parse("2015-2-22");

DateFormat outputFormatter1 = new SimpleDateFormat("dd-MMM-yyyy");
String output1 = outputFormatter1.format(date1); // 

// 如果在这种格式中输入是 2015-2-22,那么输出是 22-Feb-2015

【讨论】:

您可以根据您的要求设置格式.... like ("yyyy-MM-dd hh:mm:ss")【参考方案2】:

DateFormat.format 期望 NumberDate 但您传递给它的是 String。您可能想要parse the string,但格式化它只会产生与您解析相同的字符串。

【讨论】:

Error:(138, 31) error: no suitable method found for format(SimpleDateFormat,String) 顺便说一句,我声明了SimpleDateFormat formatdate = new SimpleDateFormat("Mmm dd");【参考方案3】:

你应该格式化输入,然后传递给输出格式

try 
    String formattedString = new SimpleDateFormat("dd MMM yyyy").format(new SimpleDateFormat("yyyy-MM-dd").parse("2014-07-31"));
 catch (ParseException e) 
    e.printStackTrace();

【讨论】:

以上是关于引起:java.lang.IllegalArgumentException:坏类:类 java.lang.String的主要内容,如果未能解决你的问题,请参考以下文章

[转]Linux下使用JNI的常见问题及解决方案

Spring Test DBUnit:无法从文件加载数据集

JPA 认为我正在删除一个分离的对象

如何区分两个“onpause”事件 - 由单击“暂停”按钮引起,以及由到达媒体片段末尾引起?

查询如何引起gc

杂牌设备网络接入引起交换机引起端口翻转的故障