直接在IDEA运行Jar包没问题,但用java -jar 的命令就报错是为什么?
对应代码:
@Bean
public RedissonClient getRedissonClient() {
// 1.创建配置对象
Config config = new Config();
// 添加单机Redisson配置
config.useSingleServer()
// 设置数据库
.setDatabase(database)
// 设置redis的地址
.setAddress("redis://" + host + ":" + port)
// 设置redis的密码(redis有密码才设置)
.setPassword(password);
// 2.创建Redisson实例
RedissonClient redisson = Redisson.create(config);
return redisson;
}
报错原因如下,是在创建Redisson客户端的时候报错:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'getRedissonClient' defined in class path resource [com/ailu/server/config/RedissonConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.redisson.api.RedissonClient]: Factory method 'getRedissonClient' threw exception; nested exception is java.lang.reflect.InaccessibleObjectException: Unable to make field private final java.math.BigInteger java.math.BigDecimal.intVal accessible: module java.base does not "opens java.math" to unnamed module @13969fbe
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658) ~[spring-beans-5.3.24.jar!/:5.3.24]
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:486) ~[spring-beans-5.3.24.jar!/:5.3.24]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352) ~[spring-beans-5.3.24.jar!/:5.3.24]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195) ~[spring-beans-5.3.24.jar!/:5.3.24]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.24.jar!/:5.3.24]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.24.jar!/:5.3.24]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.24.jar!/:5.3.24]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.24.jar!/:5.3.24]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.24.jar!/:5.3.24]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.24.jar!/:5.3.24]
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.3.24.jar!/:5.3.24]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1391) ~[spring-beans-5.3.24.jar!/:5.3.24]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1311) ~[spring-beans-5.3.24.jar!/:5.3.24]
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:887) ~[spring-beans-5.3.24.jar!/:5.3.24]
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) ~[spring-beans-5.3.24.jar!/:5.3.24]
... 81 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.redisson.api.RedissonClient]: Factory method 'getRedissonClient' threw exception; nested exception is java.lang.reflect.InaccessibleObjectException: Unable to make field private final java.math.BigInteger java.math.BigDecimal.intVal accessible: module java.base does not "opens java.math" to unnamed module @13969fbe
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.3.24.jar!/:5.3.24]
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-5.3.24.jar!/:5.3.24]
... 95 common frames omitted
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field private final java.math.BigInteger java.math.BigDecimal.intVal accessible: module java.base does not "opens java.math" to unnamed module @13969fbe
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354) ~[na:na]
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) ~[na:na]
at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:180) ~[na:na]
at java.base/java.lang.reflect.Field.setAccessible(Field.java:174) ~[na:na]
at org.nustaq.serialization.FSTClazzInfo.createFieldInfo(FSTClazzInfo.java:512) ~[fst-2.57.jar!/:na]
at org.nustaq.serialization.FSTClazzInfo.createFields(FSTClazzInfo.java:368) ~[fst-2.57.jar!/:na]
at org.nustaq.serialization.FSTClazzInfo.<init>(FSTClazzInfo.java:129) ~[fst-2.57.jar!/:na]
at org.nustaq.serialization.FSTClazzInfoRegistry.getCLInfo(FSTClazzInfoRegistry.java:129) ~[fst-2.57.jar!/:na]
at org.nustaq.serialization.FSTClazzNameRegistry.addClassMapping(FSTClazzNameRegistry.java:98) ~[fst-2.57.jar!/:na]
at org.nustaq.serialization.FSTClazzNameRegistry.registerClassNoLookup(FSTClazzNameRegistry.java:85) ~[fst-2.57.jar!/:na]
at org.nustaq.serialization.FSTClazzNameRegistry.registerClass(FSTClazzNameRegistry.java:81) ~[fst-2.57.jar!/:na]
at org.nustaq.serialization.FSTConfiguration.addDefaultClazzes(FSTConfiguration.java:814) ~[fst-2.57.jar!/:na]
at org.nustaq.serialization.FSTConfiguration.initDefaultFstConfigurationInternal(FSTConfiguration.java:477) ~[fst-2.57.jar!/:na]
at org.nustaq.serialization.FSTConfiguration.createDefaultConfiguration(FSTConfiguration.java:472) ~[fst-2.57.jar!/:na]
at org.nustaq.serialization.FSTConfiguration.createDefaultConfiguration(FSTConfiguration.java:464) ~[fst-2.57.jar!/:na]
at org.redisson.codec.FstCodec.<init>(FstCodec.java:182) ~[redisson-3.12.0.jar!/:3.12.0]
at org.redisson.config.Config.<init>(Config.java:102) ~[redisson-3.12.0.jar!/:3.12.0]
at org.redisson.Redisson.<init>(Redisson.java:118) ~[redisson-3.12.0.jar!/:3.12.0]
at org.redisson.Redisson.create(Redisson.java:160) ~[redisson-3.12.0.jar!/:3.12.0]
at com.ailu.server.config.RedissonConfig.getRedissonClient(RedissonConfig.java:40) ~[classes!/:0.0.1-SNAPSHOT]
at com.ailu.server.config.RedissonConfig$$EnhancerBySpringCGLIB$$a6471664.CGLIB$getRedissonClient$9(<generated>) ~[classes!/:0.0.1-SNAPSHOT]
at com.ailu.server.config.RedissonConfig$$EnhancerBySpringCGLIB$$a6471664$$FastClassBySpringCGLIB$$d2d3462a.invoke(<generated>) ~[classes!/:0.0.1-SNAPSHOT]
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) ~[spring-core-5.3.24.jar!/:5.3.24]
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331) ~[spring-context-5.3.24.jar!/:5.3.24]
at com.ailu.server.config.RedissonConfig$$EnhancerBySpringCGLIB$$a6471664.getRedissonClient(<generated>) ~[classes!/:0.0.1-SNAPSHOT]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:577) ~[na:na]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.3.24.jar!/:5.3.24]
... 96 common frames omitted
网上说是JDK9以上多模块的原因,但我是JDK8啊
破案了,之前电脑安装Oracle JDK18默认替换掉了环境变量配置的Jdk8,导致运行环境和项目环境不一致
就是你的依赖库有问题,或者运行环境配置毛病。我看AI比我说的还清楚,估计这也是没什么大佬来回答这个问题的原因吧。祝你顺利!
尽管您提到您正在使用JDK 8,但错误消息中显示的 java.base does not "opens java.math" to unnamed module
通常与JDK 9及以上版本中的模块系统(JPMS)相关。不过,这个错误也可能由以下几个原因引起,即使在JDK 8中也可能发生:
java.math.BigDecimal.intVal
这样的私有字段,并且这些库可能是在JDK 9或更高版本上开发的。检查依赖库:
清理和重建项目:
检查命令行参数:
java -jar
命令具有正确的类路径和所有必需的参数。更新或降级库:
查看日志和异常堆栈:
简化问题:
考虑使用不同的JDK版本:
搜索和社区支持:
本文向大家介绍Java命令行下Jar包打包小结,包括了Java命令行下Jar包打包小结的使用技巧和注意事项,需要的朋友参考一下 jar包打包实现 jar包打包可以使用jar指令实现打包,在命令行中输入jar可以查看jar指令的内容 从最后显示的两个示例看出存在两种打包的方法,两者的区别就是是否使用自己定义的MANIFEST清单文件。第一个示例没有使用MANIFEST文件进行打包,所以最终生成的ja
我无法从cmd windows 10执行java jar文件。我使用Intellji生成了一个jar文件。 当我运行命令Java-jar时,我得到了这个错误 错误:无法访问jarfile 我试着用管理权限运行cmd,但同样的错误。类路径设置正确。jar文件位于正确的目录中。 是什么导致了这个问题?谢谢
问题内容: 我正在部署用Java编写的接受命令行参数的命令行工具。我将其打包为JAR文件,因为使用单个文件很方便。 问题是要运行它,您必须先调用它,这很烦人。 我目前拥有的方法是启动一个简单的bash脚本,但这并不理想。 无论如何(在Linux,Ubuntu Server中)是否可以制作一个JAR文件来单独调用Java VM?我一直在寻找Shebang,但找不到它(这是合理的,因为它是编译后的代码
spring启动版本:2.4.1 spring云版本:2020.0.0 我的代码 我的pom。xml依赖关系 我的pom。xml插件 使用IntelliJ IDEA运行时,它运行良好。 但是当使用jar运行时(通过),它会显示 在研究错误日志后,我发现是SpringCloudOpenFeignCore中的可选依赖项,因此ClassNotFoundException是正确的行为(可选依赖项不包括在最
我使用Java Jersey框架(与Maven一起使用),并使用IntelliJ作为IDE。我遇到过这个运行时异常,它只发生在尝试从命令行运行代码时(使用maven编译,然后使用Java-JAR),但在IntelliJ中运行时不会发生,这很奇怪。 我有一些Java代码,它将尝试使HTTP访问某个远程URL,并尝试将返回的JSON读入某个Lombok POJO: 正如我之前提到的,奇怪的是,只有当我
问题内容: 根据我的阅读,执行以下命令时: 然后,将忽略主类路径,并从清单文件中获取类路径。 此外,在命令行上声明的类路径也将被忽略。所以在: /usr/local/jar/foobar.jar被忽略。 最后,我读过清单文件在jar文件中只能包含相对路径。 因此,如何包含系统上存在的外部jar的绝对路径,而不是正在执行的jar文件中的绝对路径? 问题答案: 您是否有理由避免像这样调用主类 ? 这种
问题内容: 我们如何在命令提示符下运行jar文件? 问题答案: 尝试这个