本地运行没有问题,打包后在服务器运行报错信息:
Exception in thread "main" java.lang.NoClassDefFoundError: sun/security/ec/CurveDB
at org.chainmaker.sdk.crypto.ChainmakerX509CryptoSuite.enableX509CertificateWithGM(ChainmakerX509CryptoSuite.java:293)
at org.chainmaker.sdk.crypto.ChainmakerX509CryptoSuite.<clinit>(ChainmakerX509CryptoSuite.java:72)
at org.chainmaker.sdk.User.<init>(User.java:62)
at org.chainmaker.sdk.ChainManager.createChainClient(ChainManager.java:98)
at chainmaker.sdk.demo.InitClient.inItChainClient(InitClient.java:71)
at chainmaker.sdk.demo.DemoApplication.main(DemoApplication.java:14)
Caused by: java.lang.ClassNotFoundException: sun.security.ec.CurveDB
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
... 6 more
导致该错误的原因是因为本地版本过低与服务器版本不匹配,根本原因是CurveDB是用来实现国密tls的依赖包。jdk 在1.8的不同版本中该包位置有变动,较低版本为sun.security.ec.CurveDB, 较高版本为sun.security.util.CurveDB。jdk为1.8.0_301版本以上,需引用sun.security.util.CurveDB
解决方案一:修改项目代码和依赖配置,将本地版本升到与服务器一致,该改动较大由于时间原因未采用;
解决方案二:将服务器版本降低,该过程遇到新的问题:
yum search java|grep jdk
查看jdk列表版本都较高,没有想要的jdk_1.8.0_231;
在网上找到使用wget下载的方法但是获取不到jar,迫于无奈在网盘上下载已有的jdk-8u231-linux-x64.tar.gz下载上传服务器,解压配置环境,成功部署项目,
链接: https://pan.baidu.com/s/1D9oKuA5AFb0g9BEMte7C-w?pwd=ve2e 提取码: ve2e
本地运行没有问题,打包后在服务器运行报错信息:Exception in thread "main" java.lang.NoClassDefFoundError: sun/security/ec/CurveDB at org.chainmaker.sdk.crypto.ChainmakerX509CryptoSuite.enableX509CertificateWithGM(ChainmakerX509CryptoSuite.java:293) at org.chainmaker.sdk.cryp
CurveDB是用来实现国密tls的依赖包。jdk 在1.8的不同版本中该包位置有变动,较低版本为sun.security.ec.CurveDB, 较高版本为sun.security.util.CurveDB。
首先检查本地安装的
JDK版本
或者IDE
运行
项目配置的
JDK版本
,
如果jdk为1.8.0_301版本以上,需引用sun.security.util.CurveDB。
如果是其它依赖的
jar
包项目报错,则要么修改源码,要么就将JDK修改到指定的版本。
Exception in thread
<dependency>
<groupId>
java
x.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
错误记录 - IO流出现
Error: A JNI error has occurred, please check your installation and try again Exception in thread "main"
File file = new File("hello.txt");
System.out.println(file.getAbsoluteFile());
File file1 = new File("File\\hello.txt");
System.ou.
在linux系统中
运行
jar
包主要有以下几种方式。
一、
java
-
jar
XXX.
jar
最基本的
jar
包执行方式,但是当我们用ctrl+c中断或者关闭窗口时,程序也会中断执行。
二、
java
-
jar
XXX.
jar
&
&代表在后台
运行
,使用ctrl+c不会中断程序的
运行
,但是关闭窗口会中断程序的
运行
。
三、nohup
java
-
jar
XXX.
jar
&
使用这种方式
运行
的程序日
IDEA启动
java
项目,报错:
java
.lang.reflect.inaccessibleobjectexception unable to make jdk.internal.loader.classloaders
解决方案1:
我的原因是因为IDEA的
java
的SDK有
问题
,我手动从
java
version 11改成了我本地的1.8版本,重启项目就好了。
点击IDEA的file-> 点击Project Structure:
网上有搜到这个方案,如果方案1不行的话,可以尝试再搜索
final URLClassLoader urlClassLoader = (URLClassLoader) MyClass.class.getClassLoader();
final Method addURL = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
ad...
有时,安装软件时可能会出现依赖性
问题
。这意味着软件需要其他软件才能正常工作。要解决这个
问题
,请使用yum命令并添加“-y”选项,如下所示:
sudo yum install 软件包名称 -y
4. 更新软件包
要更新已安装的软件包,请使用以下命令:
sudo yum update
5. 解决网络连接
问题
如果您的CentOS 7.6系统无法连接到互联网,请检查网络设置并确保您的网络连接正常。您还可以尝试使用以下命令来解决网络连接
问题
:
sudo systemctl restart network
以上是CentOS 7.6安装软件和解决
问题
的方法。希望这些信息能够帮助您。