CurveDB是用来实现国密tls的依赖包。jdk 在1.8的不同版本中该包位置有变动,较低版本为sun.security.ec.CurveDB, 较高版本为sun.security.util.CurveDB。
首先检查本地安装的JDK版本或者IDE运行项目配置的JDK版本,
如果jdk为1.8.0_202版本以上,需引用sun.security.util.CurveDB。
如果是其它依赖的jar包项目报错,则要么修改源码,要么就将JDK修改到指定的版本。
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
针对很多人问怎么修改源码问题,我们可通过查看异常日志,找到引用此类的主类。如上边异常日志中的org.chainmaker.sdk.crypto.ChainmakerX509CryptoSuite,把此类的源码找到,然后修改修改
import sun.security.ec.CurveDB
为
import sun.security.util.CurveDB
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
java
.
lan
g.
NoClassDefFoundError
:
java
x/validation/valueextraction/ValueExtractorD
ec
larationException
今天部署环境遇到这个
问题
,查了好长时间终于
解决
了;
问题
原因:
由于jar包hibernate-validator、validation-api 不兼容。
解决
方案:
(1). 简单粗暴:根据需求删除不兼容的jar包,删除jar包必须在保证代码没有使用的情况下,不知道的尽量别删除;
(2).
解决
兼容
问题
: 版本不兼容,就找兼容版本。
升级hibernate-validator版本:
NoClassDefFoundError
最近在使用 Redisson 框架实现分布式锁的时候,在项目启动之后,报错:
类的定义没有找到, 根本原因是 ClassNotFoundException , 但是在编译的时候,并没有报错,运行本地的测试类来进行创建对应的对象也没有
问题
创建的测试类如下,
import org.junit.Test;
import org.redisson.Redisso...
每个线程有一个PC Register程序计数器,然后就是栈区间,每个线程有一个栈内存,栈内存里又分栈帧,详见并发编程。
本地方法栈(native method stack),方法区(类的信息,常量,方法信息),堆区(最大的空间,创建的对象放在堆区)
class file ->JVM->DNA元数据模板(放在方法区)->通过构造方法,创造实例放在堆内存
分为解释器
A friend of mine wanted to start to learn
java
, and I wanted to help him, so we created a simple Hello World example.
public class Hello {
public static void main(String argv[]) {
system.out.pr...
java
.
lan
g.ClassNotFoundException的
解决
方法:
1.
java
运行环境的jdk版本比class文件的编译版本低了导致
2.class文件的访问权限或者所在目录的访问权限有
问题
,导致
java
无法读这个文件
3.jar包有错误,查看jar是否有漏或者重新导入jar包出现
java
.
lan
g.classnotfoundexception
问题
真的是很烦人,找资料
解决
问题
弄了半天时间都没找到方法,走了许多的弯路,最终还是回到了原点找到了
问题
解决
办法,费尽心机最终是
解决
了,但过
https://www.bilibili.com/video/BV1PJ411n7xZ
P01-JVM内存与垃圾回收篇概述 09:34
P02-如何看待
Java
上层技术与JVM 20:17
P03-为什么要学习JVM 05:14
P04-面向人群和课程特点 10:15
P05-官方规范下载与参考书目 08:30
P06-跨平台的语言
Java
和跨语言的平台JVM 15:22
P07-字节码与多语言混合编程 06:25
使用
java
.
security
解p12时,出现Unknown named
curve
: 1.2.156.10197.1.301错误的
解决
方法:
Pattern localPattern = Pattern.compile(",|\[|\]");
Curve
DB
.add("SM2", "1.2.156.10197.1.301", 1, p, a, b, n, gx, gy, 1, localPatt...