Kotlin - приложение вылетает при запуске в строке ObjectInputStream - PullRequest
0 голосов
/ 11 февраля 2019

Мое приложение аварийно завершает работу при запуске в строке ObjectInputStream, и я не уверен, почему это так, оно вызывает указанную выше команду openInputFile, чтобы получить необходимый файл, но при запуске вылетает вся проблема.

Я попытался удалить теги активности из строки, но пока ничего не получалось

        private fun loadList() {
            try {
        val fileInputStream = activity?.openFileInput("starWarsList.dat")
        val objectInputStream = ObjectInputStream(fileInputStream)

        @Suppress("UNCHECKED_CAST")
        val list = objectInputStream.readObject() as? MutableList<StarWarsItem>
        if (list != null) {
            adapter.list = list
        }
        objectInputStream.close()
        fileInputStream?.close()
    } catch (e: java.io.FileNotFoundException) {
        Toast.makeText(activity, "no existing list found", Toast.LENGTH_LONG).show()
    }
}

Конечным результатом является правильная загрузка приложения, поэтому я могу работать с остальной частью моего проекта,но, как уже упоминалось выше, приложение аварийно завершает работу при запуске в этой строке.

Любой ввод будет приветствоваться.

РЕДАКТИРОВАТЬ: ошибка получена при запуске

2019-02-11 08:14:51.432 19116-19116/com.example.assignment E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.assignment, PID: 19116
    java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:503)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 
     Caused by: java.io.EOFException
        at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2344)
        at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2813)
        at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:804)
        at java.io.ObjectInputStream.<init>(ObjectInputStream.java:301)
        at com.example.assignment.StarWarsList.loadList(StarWarsList.kt:52)
        at com.example.assignment.StarWarsList.onActivityCreated(StarWarsList.kt:46)
        at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:2460)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1483)
        at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852)
        at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3269)
        at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3229)
        at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:201)
        at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:620)
        at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:178)
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1391)
        at android.app.Activity.performStart(Activity.java:7157)
        at android.app.ActivityThread.handleStartActivity(ActivityThread.java:2937)
        at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:180)
        at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165)
        at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 
2019-02-11 08:14:51.513 19116-19116/com.example.assignment I/Process: Sending signal. PID: 19116 SIG: 9

1 Ответ

0 голосов
/ 11 февраля 2019

Похоже, у вас есть пустой файл без сериализации.Я предлагаю сбросить двоичное содержимое файла .dat или его длину перед его чтением.

Если он недействителен, замените его допустимым значением по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...