java.lang.InstantiationException: at java.lang.Class.newInstance(Unknown Source)

本文详细解析了Java类实例化过程中遇到的无参构造函数缺失导致的InstantiationException异常,并提供了解决方案:在类中添加一个无参构造函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Class cla = Class.forName("com.sxit.Object01");
Object01 o2 = (Object01) cla.newInstance();//此处抛出异常

 异常信息:

java.lang.InstantiationException: com.sxit.Object01
	at java.lang.Class.newInstance0(Unknown Source)
	at java.lang.Class.newInstance(Unknown Source)
	at com.sxit.Object01.main(Object01.java:62)

原因:

debug之后,发现cla.newInstance()的时候,在Class类内部685行会执行以下代码:
arrayOfConstructor = getDeclaredConstructors0(paramBoolean);
这里paramBoolean参数是false,该方法是用来获取该类的无参构造函数,如果没有则返回值为null,继而抛出初始化异常。

 解决办法:

类中加上一个无参构造函数
public Object01(){

}

 

 

D Shutting down VM 2025-06-06 08:58:56.216 29574-29574 AndroidRuntime com.example.kucun2 E FATAL EXCEPTION: main Process: com.example.kucun2, PID: 29574 androidx.fragment.app.Fragment$InstantiationException: Unable to instantiate fragment com.example.kucun2.fragments.OrderDisplayFragment: make sure class name exists at androidx.fragment.app.FragmentFactory.loadFragmentClass(FragmentFactory.java:97) at androidx.fragment.app.Fragment.instantiate(Fragment.java:670) at androidx.fragment.app.FragmentContainer.instantiate(FragmentContainer.java:57) at androidx.fragment.app.FragmentManager$3.instantiate(FragmentManager.java:525) at androidx.navigation.fragment.FragmentNavigator.createFragmentTransaction(FragmentNavigator.kt:394) at androidx.navigation.fragment.FragmentNavigator.navigate(FragmentNavigator.kt:329) at androidx.navigation.fragment.FragmentNavigator.navigate(FragmentNavigator.kt:308) at androidx.navigation.NavController.navigateInternal(NavController.kt:265) at androidx.navigation.NavController.navigate(NavController.kt:1832) at androidx.navigation.NavController.navigate(NavController.kt:1668) at androidx.navigation.NavController.navigate(NavController.kt:1595) at androidx.navigation.ui.NavigationUI.onNavDestinationSelected(NavigationUI.kt:96) at androidx.navigation.ui.NavigationUI.setupWithNavController$lambda$3(NavigationUI.kt:476) at androidx.navigation.ui.NavigationUI.$r8$lambda$BjnX4GnGzOVkMyDjMUkrTEr9dSk(Unknown Source:0) at androidx.navigation.ui.NavigationUI$$ExternalSyntheticLambda5.onNavigationItemSelected(D8$$SyntheticClass:0) at com.google.android.material.navigation.NavigationView$2.onMenuItemSelected(NavigationView.java:331) at androidx.appcompat.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:836) at androidx.appcompat.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:159) at androidx.appcompat.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:987) at com.google.android.material.internal.NavigationMenuPresenter$1.onClick(NavigationMenuPresenter.java:506) at android.view.View.performClick(View.java:8166) at android.view.View.performClickInternal(View.java:8143) at android.view.View.-$$Nest$mperformClickInternal(Unknown Source:0) at android.view.View$PerformClick.run(View.java:32198) at android.os.Handler.handleCallback(Handler.java:1014) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loopOnce(Looper.java:250) at android.os.Looper.loop(Looper.java:340) at android.app.ActivityThread.main(ActivityThread.java:9913) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:621) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:957) Caused by: java.lang.ClassNotFoundException: com.example.kucun2.fragments.OrderDisplayFragment at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:607) at androidx.fragment.app.FragmentFactory.loadClass(FragmentFactory.java:53) at androidx.fragment.app.FragmentFactory.loadFragmentClass(FragmentFactory.java:94) ... 31 more Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.kucun2.fragments.OrderDisplayFragment" on path: DexPathList[[zip file "/data/app/~~zaOweDqmIa3I1rXy5NxwNQ==/com.example.kucun2-uQxPAZIa6ms4RM6DGKLTmA==/base.apk"],nativeLibraryDirectories=[/data/app/~~zaOweDqmIa3I1rXy5NxwNQ==/com.example.kucun2-uQxPAZIa6ms4RM6DGKLTmA==/lib/arm64, /system/lib64, /system_ext/lib64]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259) at java.lang.ClassLoader.loadClass(ClassLoader.java:637) at java.lang.ClassLoader.loadClass(ClassLoader.java:573) ... 35 more 2025-06-06 08:58:56.241 29574-29574 Process com.example.kucun2 I Sending signal. PID: 29574 SIG: 9
最新发布
06-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值