injector java
时间: 2023-10-07 19:12:23 浏览: 40
"Injector" 是一个依赖注入框架的概念,它可以帮助开发者管理 Java 应用程序中的对象依赖关系。在 Java 应用程序中,对象之间通常会存在依赖关系,即一个对象需要引用另一个对象才能完成某些功能。使用依赖注入框架可以让开发者更方便地管理这些依赖关系,提高代码复用性和可维护性。常见的 Java 依赖注入框架包括 Spring、Guice 等。
相关问题
用jdk8编译,jdk17运行程序,window上没问题,linux报错,报错信息: accessible:module java.base does not "opens java.lang"to unnamed module @93c2679 at java.base/java.Lang.reflect.Accessibleobject.checkCanSetAccessible(Accessibleobject.java:354) at java.base/java.lang.reflect.Accessibleobject.checkCanSetAccessible(Accessibleobject.java:297) at java.base/java.Lang.reflect.Method.checkCanSetAccess ible(Method.java:199 at java.base/java.lang.reflect.Method.setAccess ible(Method.java:193) at com.sun.xml.bind.v2.runtime.reflect.opt.Injector$1.run(Injector.java:150) at com.sun.xml.bind.v2.runtime.reflect.opt.Injector$1.run(Injector.java:147) at java.base/java.security.AccessController.doPrivileged(AccessController.java:318) at com.sun.xml.bind.v2.runtime.reflect.opt.Injector.<clinit>(Injector.java:146) 34 more
在您使用 JDK 8 编译程序,然后在 JDK 17 上运行时出现的错误信息是:
```
accessible:module java.base does not "opens java.lang" to unnamed module @93c2679
at java.base/java.Lang.reflect.Accessibleobject.checkCanSetAccessible(Accessibleobject.java:354)
at java.base/java.lang.reflect.Accessibleobject.checkCanSetAccessible(Accessibleobject.java:297)
at java.base/java.Lang.reflect.Method.checkCanSetAccessible(Method.java:199)
at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
at com.sun.xml.bind.v2.runtime.reflect.opt.Injector$1.run(Injector.java:150)
at com.sun.xml.bind.v2.runtime.reflect.opt.Injector$1.run(Injector.java:147)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
at com.sun.xml.bind.v2.runtime.reflect.opt.Injector.<clinit>(Injector.java:146)
```
这个错误表明在您的程序中,存在一个访问权限问题。具体来说,它指出 java.base 模块没有将 java.lang 模块开放给未命名模块,导致访问权限被拒绝。
这个问题可能是由于 JDK 17 引入了模块化系统,而 JDK 8 不支持模块化系统导致的。要解决这个问题,您可以尝试以下几个步骤:
1. 尝试将代码升级为使用模块化系统。在 JDK 9 及更高版本中,引入了模块化系统,您可以通过创建模块描述文件(module-info.java)来声明模块依赖和开放的包。请确保您的代码和依赖项都兼容模块化系统,并正确声明了访问权限。
2. 如果您无法将代码升级为使用模块化系统,您可以尝试在 JDK 17 上使用 `--illegal-access=permit` 参数来放宽对非法访问的检查。请注意,这个参数只是一个临时解决方案,并不推荐在生产环境中使用。
3. 如果您的代码依赖于特定的库或框架,可能需要升级这些库或框架以与 JDK 17 兼容。请查阅相关文档或联系库/框架的开发者以获取更多支持。
需要注意的是,尽管您的程序在 Windows 上运行没有问题,但在 Linux 上出现了错误。这可能是由于平台差异导致的,因此建议您在运行时检查和解决与平台相关的问题。
如果以上步骤都没有解决问题,建议提供更多的上下文信息,例如您的代码片段、使用的库和依赖项,以及在 Linux 上运行程序时的详细步骤,以便更好地理解和解决问题。
Caused by: java.lang.NoSuchMethodException: sun.misc.Unsafe.defineClass(java.lang.String,[B,int,int,java.lang.ClassLoader,java.security.ProtectionDomain) at java.base/java.lang.Class.getMethod(Class.java:2227) at com.sun.xml.bind.v2.runtime.reflect.opt.Injector$3.run(Injector.java:201) at com.sun.xml.bind.v2.runtime.reflect.opt.Injector$3.run(Injector.java:197) at java.base/java.security.AccessController.doPrivileged(AccessController.java:569) ... 90 common frames omitted 2023-06-11 18:55:14.017 WARN 15576 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfiguration': Unsatisfied dependency expressed through method 'setConfigurers' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'resourceServerConfigurerAdapter': Unsatisfied dependency expressed through field 'pigAccessDeniedHandler'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pigAccessDeniedHandler' defined in com.pig4cloud.pig.common.security.component.PigResourceServerAutoConfiguration: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.pig4cloud.pig.common.security.component.PigAccessDeniedHandler]: Factory method 'pigAccessDeniedHandler' threw exception; nested exception is java.lang.NullPointerException: Cannot invoke "java.lang.reflect.Method.invoke(Object, Object[])" because "com.sun.xml.bind.v2.runtime.reflect.opt.Injector.defineClass" is null
这个异常信息看起来像是在运行 Spring Boot 应用程序时发生的。具体而言,它可能表示在应用程序启动过程中出现了某些问题,可能是由于依赖项不满足或配置错误所致。在这种情况下,您可能需要检查应用程序的配置和依赖项,以确保它们正确地设置和配置。如果您不确定如何解决问题,请提供更多上下文信息或更多详细信息,我会尽力帮助您解决问题。