Exception in Application constructor Exception in thread "main" java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1071) Caused by: java.lang.RuntimeException: Unable to construct Application instance: class com.example.demo.Main at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:891) at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:196) at java.base/java.lang.Thread.run(Thread.java:833) Caused by: java.lang.IllegalAccessException: class com.sun.javafx.application.LauncherImpl (in module javafx.graphics) cannot access class com.example.demo.Main (in module com.example.javafxtest) because module com.example.javafxtest does not export com.example.demo to module javafx.graphics at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:392) at java.base/java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:674) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:489) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$8(LauncherImpl.java:803) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:484) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:457) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:456) at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96) at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:184) ... 1 more
这个异常看起来是因为模块间的访问限制导致的。在Java 9及以上版本中,模块化成为了标准,模块之间默认是不互相可见的。因此,在你的代码中,可能是因为 com.example.demo.Main
所在的模块 com.example.javafxtest
没有将 com.example.demo
模块导出给 javafx.graphics
模块,所以 javafx.graphics
无法访问 Main
类。
你可以尝试将 com.example.demo
模块导出给 javafx.graphics
模块,方法是在 com.example.javafxtest
模块的 module-info.java
文件中添加如下代码:
module com.example.javafxtest {
exports com.example.demo to javafx.graphics;
// ...
}
如果还有问题,可以提供更多的上下文信息,如代码片段、日志等。
exception in thread "main" java.lang.reflect.invocationtargetException
Exception in thread "main" java.lang.reflect.InvocationTargetException
是 Java 程序运行时可能遇到的一种异常。这个异常通常是因为使用了 Java 反射 API(Reflection API)在运行时动态地调用了一个方法,而该方法抛出了一个异常。InvocationTargetException
是一个包装类,用来包装在反射调用中方法内部抛出的异常。
在使用 Java 反射 API 时,你可能会使用到 Class.getMethod(String name, Class<?>... parameterTypes)
或者 Constructor.newInstance(Object... initargs)
等方法来动态地创建对象或者调用方法。当这些方法在执行过程中遇到异常时,会将异常封装在 InvocationTargetException
中抛出。
例如,如果你在调用一个方法时该方法内部抛出了 NullPointerException
,那么实际抛给你的异常将是 InvocationTargetException
,而真正的异常则被封装在 InvocationTargetException
的 getCause()
方法返回的异常中。
要解决这个问题,你需要捕获 InvocationTargetException
,然后通过调用 getCause()
方法来获取原始异常,并对原始异常进行相应的处理。
[root@zhaosai ~]# hive Logging initialized using configuration in jar:file:/opt/programs/apache-hive-1.2.2-bin/lib/hive-common-1.2.2.jar!/hive-log4j.properties Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:522) at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:677) at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:621) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.hadoop.util.RunJar.run(RunJar.java:221) at org.apache.hadoop.util.RunJar.main(RunJar.java:136) Caused by: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1523) at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.<init>(RetryingMetaStoreClient.java:86) at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:132) at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:104) at org.apache.hadoop.hive.ql.metadata.Hive.createMetaStoreClient(Hive.java:3005) at org.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:3024) at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:503) ... 8 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1521) ... 14 more Caused by: javax.jdo.JDOFatalInternalException: Error creating transactional connection factory NestedThrowables:
这个错误提示看起来像是由于Hive无法连接到Hadoop集群或者Metastore服务导致的。您可以检查以下几点:
- 检查Hadoop集群是否已经启动并运行中。
- 检查Hive配置文件中是否正确配置了Hadoop集群的相关信息,如core-site.xml、hdfs-site.xml等。
- 检查Metastore服务是否已经启动并运行中,以及Hive配置文件中是否正确配置了Metastore服务的相关信息。
- 如果您使用的是远程Metastore服务,那么请检查网络连接是否畅通,能否访问到Metastore服务。
如果以上步骤都检查过了还是无法解决问题,可以尝试重新安装或者升级Hadoop和Hive,或者查看Hive日志文件,找到更详细的错误信息以便定位问题。
相关推荐














