java.lang.RuntimeException: 无法实例化活动ComponentInfo - NFC访问

3

我看到了很多类似于这个问题的问题,但它们似乎是针对它们使用的类和包具体而言的。我尝试了一些解决方案,但没有帮助到我。我遇到了以下错误:

03-27 14:30:08.604: D/AndroidRuntime(8057): Shutting down VM
03-27 14:30:08.604: W/dalvikvm(8057): threadid=1: thread exiting with uncaught exception (group=0x41c02c80)
03-27 14:30:08.604: E/AndroidRuntime(8057): FATAL EXCEPTION: main
03-27 14:30:08.604: E/AndroidRuntime(8057): Process: org.nick.nfc.seaccess, PID: 8057
03-27 14:30:08.604: E/AndroidRuntime(8057): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{org.nick.nfc.seaccess/org.nick.nfc.seaccess.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "org.nick.nfc.seaccess.MainActivity" on path: DexPathList[[zip file "/system/framework/com.android.nfc_extras.jar", zip file 

任何想法,我应该如何解决它?
这是主要活动的开始:
public class MainActivity extends Activity implements OnClickListener {

    private static final String TAG = MainActivity.class.getSimpleName();

    private Button gpInfoButton;
    private Button emvInfoButton;
    private Button walletInfoButton;

    private TextView infoText;

    private Terminal terminal;
    private CardConnection seConn;

    @Override
    public void onCreate(Bundle savedInstanceState) {
...

这是我从清单文件中提取的活动标签。有时候人们会在清单文件中添加完整的包名。我应该这样做并查看发生了什么吗?

    <activity
            android:name=".MainActivity"
            android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|s    mallestScreenSize"
            android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

我发现一个链接说问题可能出在我编辑的一个包含证书的xml文件上。我已经粘贴了下面的文件,删除了证书。你看到有什么问题吗?

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- Applications granted NFCEE access on user builds
    See packages/apps/Nfc/etc/sample_nfcee_access.xml for full documentation.
 -->
    <!--  Google wallet release signature -->
    <signer android:signature="308205bd852e" />

<!-- Sequent Wallet signature -->
<signer android:signature="30820243badc1df9d"/>
<!-- android-se-access signature-->
    <signer
android:signature="3082044cbd852e">
<package android:name="org.nic.nfc.seaccess"/>

</signer>
</resources>

这是项目工作区的视图

workspace

我在日志中看到了一些东西,想要添加到这个帖子中。似乎包名旁边有“-1”和“-2”。那应该在那里,还是它引起了我的问题?这是我所说的日志消息:

03-27 22:55:10.884: E/AndroidRuntime(9436): Caused by:     java.lang.ClassNotFoundException: Didn't find class "org.nick.nfc.seaccess.MainActivity"     on path: DexPathList[[zip file "/system/framework    /com.android.nfc_extras.jar", zip file "/data/app/org.nick.nfc.seaccess-    1.apk"],nativeLibraryDirectories=[/data/app-lib/org.nick.nfc.seaccess-1, /vendor/lib,     /system/lib]]
03-27 22:58:02.104: E/AndroidRuntime(9880): Caused by:     java.lang.ClassNotFoundException: Didn't find class "org.nick.nfc.seaccess.MainActivity"     on path: DexPathList[[zip file "/system/framework    /com.android.nfc_extras.jar", zip file "/data/app/org.nick.nfc.seaccess-    2.apk"],nativeLibraryDirectories=[/data/app-lib/org.nick.nfc.seaccess-2, /vendor/lib,         /system/lib]]

你是否不小心将 MainActivity 类放在了除了 org.nick.nfc.seaccess 以外的包中? - Michael Roland
不,我会发布工作区项目的图片。 - user3326293
这个项目引用了另一个项目的JAR文件和JAVA代码。你在图片中看不到它,因为它在项目列表的最底部。我是否会因为该项目找不到此项目的MainActivity而出现此错误? - user3326293
如果那个JAR文件只是com.android.nfc_extras.jar,那应该不会有问题。在那些其他项目中使用了哪些包名? - Michael Roland
另一个项目来自SVN。它们的名称是:src/main/java、src/main/resources和src/test/java。 - user3326293
你觉得这与应用程序中的反射使用有关吗?我这么说是因为这是我在日志中看到的:Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException - user3326293
1个回答

0

从跟踪信息中可以看出:java.lang.ClassNotFoundException: 没有找到类 "org.nick.nfc.seaccess.MainActivity"

这意味着类 org.nick.nfc.seaccess.MainActivity 未定义或无法加载。

您是否有一个名为 org.nick.nfc.seaccess.MainActivity 的类?它的代码是什么?它是否有默认构造函数?它是否在清单文件中声明?


我没有看到主活动的默认构造函数。我将文件的开头添加到此线程的开头。 - user3326293
你的意思是 <category android:name="android.intent.category.LAUNCHER" /> 吗?LAUNCHER 类别定义了应用程序是否可以启动。它应该保持不变。 - Sofi Software LLC
清单文件中的包名和 MainActivity.java 中的包名是什么?例如,它们是否相同? - Sofi Software LLC
它们似乎都属于org.nick.nfc.seaccess。 - user3326293
这是一个需要验证的长列表:https://dev59.com/EW445IYBdhLWcg3w0NWu - Sofi Software LLC
谢谢。我正在查看列表中的项目和其他可能存在的问题。我认为我需要验证我的所有项目依赖项是否放置正确。一旦我找到解决方案,我会记录下来。非常感谢您的帮助。 - user3326293

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接