原因:java.lang.InstantiationException:类com.bustracker.PostData没有零参数构造函数

阿斯克先生

我想每隔60秒定期使用HttpURLConnection api将JSON字符串发布到localhost服务器(WAMP),以将其插入数据库中。因此,要使其正常工作,我实现了要从onStartCommand方法中调用的Asynctask,但出现此错误:Caused by: java.lang.NoSuchMethodException: <init> []并且Caused by: java.lang.InstantiationException: class com.bustracker.PostData has no zero argument constructor如何将数据“ JSON字符串”传递给PostData的构造函数?

Logcat错误:

04-23 12:52:24.647: E/AndroidRuntime(19309): Process: com.bustracker, PID: 19309
04-23 12:52:24.647: E/AndroidRuntime(19309): java.lang.RuntimeException: Unable to instantiate service com.bustracker.PostData: java.lang.InstantiationException: class com.bustracker.PostData has no zero argument constructor
04-23 12:52:24.647: E/AndroidRuntime(19309):    at android.app.ActivityThread.handleCreateService(ActivityThread.java:3135)
04-23 12:52:24.647: E/AndroidRuntime(19309):    at android.app.ActivityThread.access$1900(ActivityThread.java:177)
04-23 12:52:24.647: E/AndroidRuntime(19309):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1531)
04-23 12:52:24.647: E/AndroidRuntime(19309):    at android.os.Handler.dispatchMessage(Handler.java:102)
04-23 12:52:24.647: E/AndroidRuntime(19309):    at android.os.Looper.loop(Looper.java:145)
04-23 12:52:24.647: E/AndroidRuntime(19309):    at android.app.ActivityThread.main(ActivityThread.java:5944)
04-23 12:52:24.647: E/AndroidRuntime(19309):    at java.lang.reflect.Method.invoke(Native Method)
04-23 12:52:24.647: E/AndroidRuntime(19309):    at java.lang.reflect.Method.invoke(Method.java:372)
04-23 12:52:24.647: E/AndroidRuntime(19309):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1389)
04-23 12:52:24.647: E/AndroidRuntime(19309):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1184)
04-23 12:52:24.647: E/AndroidRuntime(19309): Caused by: java.lang.InstantiationException: class com.bustracker.PostData has no zero argument constructor
04-23 12:52:24.647: E/AndroidRuntime(19309):    at java.lang.Class.newInstance(Class.java:1641)
04-23 12:52:24.647: E/AndroidRuntime(19309):    at android.app.ActivityThread.handleCreateService(ActivityThread.java:3132)
04-23 12:52:24.647: E/AndroidRuntime(19309):    ... 9 more
04-23 12:52:24.647: E/AndroidRuntime(19309): Caused by: java.lang.NoSuchMethodException: <init> []
04-23 12:52:24.647: E/AndroidRuntime(19309):    at java.lang.Class.getConstructor(Class.java:531)
04-23 12:52:24.647: E/AndroidRuntime(19309):    at java.lang.Class.getDeclaredConstructor(Class.java:510)
04-23 12:52:24.647: E/AndroidRuntime(19309):    at java.lang.Class.newInstance(Class.java:1639)
04-23 12:52:24.647: E/AndroidRuntime(19309):    ... 10 more

这一部分代码是从MainActivity类的内部类“ MyLocationListerner”中的onLocationChanged方法调用的:

String jSONString = convertToJSON(pLong, pLat, formatted);
PostData sender = new PostData(jSONString);             
Intent intent3 = new Intent(MainActivity.this, PostData.class);
PendingIntent pintent3 = PendingIntent.getService(getApplicationContext(), 0, intent3, 0);
AlarmManager alarm3 = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Calendar cal = Calendar.getInstance();
// for 30 mint 60*60*1000
alarm3.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
    1000, pintent3);

startService(new Intent(getBaseContext(), PostData.class));

PostData类:

package com.bustracker;

import java.io.DataOutputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;

import android.app.IntentService;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Handler;

public class PostData extends IntentService {
    String jSONString;
    Handler handler = new Handler();

    public PostData(String jSONString) {
        super("some");
        this.jSONString = jSONString;
    }

    public String getjSONString() {
        return jSONString;
    }

    public void setjSONString(String jSONString) {
        this.jSONString = jSONString;
    }


    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        new MyAsyncTask().execute(jSONString);

        return super.onStartCommand(intent, flags, startId);
    }
    @Override
    protected void onHandleIntent(Intent intent) {
        // TODO Auto-generated method stub

    }

    class MyAsyncTask extends AsyncTask<String, Integer, Void> {

        @Override
        protected Void doInBackground(String... params) {
            // TODO Auto-generated method stub

            try {
                //This is the ip address of my laptop wifi because I am running the app in my device and I want to send the data to the localhost server(WAMP). 
                URL myUrl = new URL("http://192.168.182.15/webservice"); 
                HttpURLConnection myConnection = (HttpURLConnection) myUrl
                        .openConnection();
                myConnection.setRequestMethod("POST");
                myConnection.setDoOutput(true);
                myConnection.setUseCaches(false);
                myConnection.setConnectTimeout(10000);
                myConnection.setReadTimeout(10000);
                myConnection.setRequestProperty("Content-Type",
                        "application/json");
                myConnection.connect();
                // create data output stream
                DataOutputStream wr = new DataOutputStream(
                        myConnection.getOutputStream());
                // write to the output stream from the string
                wr.writeBytes(jSONString);
                wr.close();
            } catch (IOException e) {

                e.printStackTrace();
            }
            return null;

        }

    }
}

清单部分:

<service android:name=".PostData" />
马尔辛·奥尔洛夫斯基(Marcin Orlowski)

错误消息不言自明:

class com.bustracker.PostData has no zero argument constructor

意味着您需要添加这样的构造函数,甚至是虚拟的:

public PostData {}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

带有null消息和原因的java.lang.ClassCastException

junit java的参数化测试构造函数错误消息:测试类应恰好具有一个公共零参数构造函数

Android视图模型类没有零参数构造函数,片段中的实例化异常

java.lang.IllegalArgumentException的原因是什么:即使通过values()进行迭代也很好,但是没有枚举const类吗?

原因:java.lang.NoClassDefFoundError:无法初始化类com.jayway.restassured.RestAssured

引起原因:java.lang.IllegalArgumentException:错误的类:class java.lang.String

java.lang.InstantiationException:类没有零参数构造函数

java.lang.InstantiationException:类com.e没有零参数构造函数

java.lang.InstantiationException:类没有零参数构造函数错误

是什么原因导致“ java.lang.IllegalArgumentException:没有为键提供值”?

在Groovy Soap UI 5.4.0中执行类时出现java.lang.InstantiationException错误

超类'Bloc <xxx,xxx>'在dart中没有零参数构造函数

Corda-无法初始化主类胶囊(引起原因:java.lang.NoClassDefFoundError:java / lang / instrument / Instrumentation)

原因:java.lang.ClassNotFoundException:未找到类“ com.google.firebase.FirebaseApp $ IdTokenListenersCountChangedListener”

Xamarin Android java.lang.InstantiationException:java.lang.Class没有零参数构造函数

原因:java.lang.IllegalStateException:没有为此提供程序指定任何值

Java反射:原始int的构造函数原因:java.lang.NoSuchMethodException:int。<init>(int)

我得到以下原因:java.lang.InstantiationException

Android通过其他类java.lang.InstantiationException中的线程调用函数:无法实例化类……没有空的构造函数

java.lang.NoSuchMethodError的原因:com.sun.jna.Native.register(Ljava / lang / String;)V

ormlite-原因:java.lang.IllegalArgumentException:com.github.snowdream.android.aaj类中没有字段具有DatabaseField批注

java.lang.InstantiationException android

没有java.lang.Object作为超类的类

Java:如何使用“ java.lang.String [] args”作为参数从超类继承构造函数?

没有默认构造函数的 Java 类

WAS Liberty - EJB - bean 没有不带参数的公共构造函数和 java.lang.NoClassDefFoundError

具有根本原因的 java.lang.NullPointerException

java.lang.InstantiationException:java.lang.Class<com.example.exampleproject.ExampleActivity> 没有零参数构造函数

无法初始化主类com....,原因:java.lang.NoClassDefFoundError