直接在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版本:
搜索和社区支持:
项目中手动引入第三方jar包,要打包到我们自己项目的jar包里面。本地测试没有问题,但是部署运行时报错找不到三方jar包 我进行过以下尝试: 利用路径进行jar包的定位并打包 通过 可以将如图所示的jar打进去,但是我主要使用的jar包却没有打进去 结果java -jar时依旧报错 脑壳痛,求大神解答
本文向大家介绍Java命令行下Jar包打包小结,包括了Java命令行下Jar包打包小结的使用技巧和注意事项,需要的朋友参考一下 jar包打包实现 jar包打包可以使用jar指令实现打包,在命令行中输入jar可以查看jar指令的内容 从最后显示的两个示例看出存在两种打包的方法,两者的区别就是是否使用自己定义的MANIFEST清单文件。第一个示例没有使用MANIFEST文件进行打包,所以最终生成的ja
我无法从cmd windows 10执行java jar文件。我使用Intellji生成了一个jar文件。 当我运行命令Java-jar时,我得到了这个错误 错误:无法访问jarfile 我试着用管理权限运行cmd,但同样的错误。类路径设置正确。jar文件位于正确的目录中。 是什么导致了这个问题?谢谢
我用的hxyFrame框架,在idea能启动起来,但是在diea打包后,用java-jar 启动jar包报错。这是什么原因?
问题内容: 我正在部署用Java编写的接受命令行参数的命令行工具。我将其打包为JAR文件,因为使用单个文件很方便。 问题是要运行它,您必须先调用它,这很烦人。 我目前拥有的方法是启动一个简单的bash脚本,但这并不理想。 无论如何(在Linux,Ubuntu Server中)是否可以制作一个JAR文件来单独调用Java VM?我一直在寻找Shebang,但找不到它(这是合理的,因为它是编译后的代码
由于云之家提供的jar, 在maven上找不到,我只能在idea上直接导入。本地上能够运行,但想打包发布到服务器上。idea就提示"程序包com.yunzhijia.cloudflow不存在"。这种情况请问得怎么解决??