java.lang.NoClassDefFoundError: javax/crypto/spec/DESedeKeySpec

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java.lang.NoClassDefFoundError: javax/crypto/spec/DESedeKeySpec相关的知识,希望对你有一定的参考价值。

MIDlet工程, 大体代码:
protected void startApp() throws MIDletStateChangeException
Display display = Display.getDisplay(this);
Form form = new Form("ss");
String s = "1";
System.out.println("11");
TripleDES des = new TripleDES("106588992","");
s = des.test_Cipher();
form.setTitle(s);
display.setCurrent(form);

//TripleDES 是我写的加密类,在以java project方式运行时可以成功加密。
现在我要在J2ME project里面实现该方法。导入了JRE System Library[jdk1.5.0]和
J2ME library[Sun Java...]
而且在JRE System Library[jdk1.5.0]里面有这个"javax/crypto/spec/DESedeKeySpec”但是还是出现这个错误,怎么回事呀
我的环境变量配置没问题,其他的项目可以跑起来
J2ME library[Sun Java...] 这个里面
有个satsa-crypto.jar包 里面有个包路径javax.crypto.spec里面只有IvParameterSpec.class和SecretKeySpec.class两个类。
是不是因为这个问题,它可能默认去这个里面去找类结果没找到

找到JRE的安装目录下的lib目录,
例如:我是在D:\Program Files\Java\jre6\lib下。
引入jce.jar这个文件,是加密解密的JRE提供者类。追问

我知道你的意思,试过了,不行,会不会是因为我补充的原因。郁闷中

追答

你到百度谷歌搜“Using JCE in a J2ME environment”,前两篇链接进去看看有用没

参考技术A 你把satsa-crypto.jar删掉试下 参考技术B jar 包路径 添加到classpath 里面了吗 参考技术C jre是默认的,还是你创建的?追问

默认的,所有的都是调用的默认的

追答

你安装一个JDK,将eclipse的换成安装的试试

获取 NoClassDefFoundError:无法初始化类 org.codehaus.groovy.vmplugin.v7.Java7

【中文标题】获取 NoClassDefFoundError:无法初始化类 org.codehaus.groovy.vmplugin.v7.Java7【英文标题】:Getting NoClassDefFoundError: Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7 【发布时间】:2020-12-17 13:25:01 【问题描述】:

我在启动 Spring Boot 应用程序时收到以下错误。

java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.reflection.ReflectionCache
    at org.codehaus.groovy.runtime.dgmimpl.NumberNumberMetaMethod.<clinit>(NumberNumberMetaMethod.java:33) ~[groovy-2.5.8.jar:2.5.8]
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:na]
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) ~[na:na]
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481) ~[na:na]
    at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.createMetaMethodFromClass(MetaClassRegistryImpl.java:258) ~[groovy-2.5.8.jar:2.5.8]
    at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:111) ~[groovy-2.5.8.jar:2.5.8]
    at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:86) ~[groovy-2.5.8.jar:2.5.8]
    at groovy.lang.GroovySystem.<clinit>(GroovySystem.java:36) ~[groovy-2.5.8.jar:2.5.8]
    at org.springframework.beans.factory.groovy.GroovyBeanDefinitionReader.<init>(GroovyBeanDefinitionReader.java:150) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
    at org.springframework.boot.BeanDefinitionLoader.<init>(BeanDefinitionLoader.java:85) ~[spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
    at org.springframework.boot.SpringApplication.createBeanDefinitionLoader(SpringApplication.java:738) ~[spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
    at org.springframework.boot.SpringApplication.load(SpringApplication.java:681) ~[spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
    at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:392) ~[spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) ~[spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) ~[spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) ~[spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
    at pizzainthecloud.pizzaplace.Application.main(Application.java:23) ~[main/:na]

经过大量搜索,我发现了包括 java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7 在内的多个实例,但大多数是旧版本 gradle 和 groovy 上的旧帖子,或者它们与 android 相关。

这是我的版本信息:

$ gradle -version

------------------------------------------------------------
Gradle 6.6.1
------------------------------------------------------------

Build time:   2020-08-25 16:29:12 UTC
Revision:     f2d1fb54a951d8b11d25748e4711bec8d128d7e3

Kotlin:       1.3.72
Groovy:       2.5.12
Ant:          Apache Ant(TM) version 1.10.8 compiled on May 10 2020
JVM:          14.0.2 (Oracle Corporation 14.0.2+12-46)
OS:           Linux 5.4.0-42-generic amd64

除了我的单元测试完全是 groovy/spock 之外,我没有做任何 groovy 并且我正在使用 gradle 作为我的构建引擎。

按照我找到的指示,我继续将我的 gradle-wrapper.properties 文件更改为

distributionUrl=https\://services.gradle.org/distributions/gradle-6.6-bin.zip

它是 6.5-bin。

这个项目在我使用 Java 8 的旧计算机上运行良好。我将它移到了我的新工作站并尝试移到 open JDK 14,这就是新问题开始的时候。

想知道从这里去哪里。

【问题讨论】:

【参考方案1】:

来自https://github.com/gradle/gradle/issues/10248

似乎 GROOVY-9211 不会被向后移植到 2.5.x。因此,Gradle 似乎需要升级到 Groovy 3.x 才能支持 JDK 14。

在 Gradle 使用 Groovy 3.x 之前,您需要使用 JDK 13。

【讨论】:

我想这让我很困惑,因为我没有意识到 gradle 使用的 groovy 版本比可用版本要旧得多。切换到 jdk 13 解决了我的问题。感谢您的输入。我编辑了您的答案,以便在将来提供更多指导。【参考方案2】:

我在使用 maven 3.2 时遇到了同样的问题。和 JDK 1.8。升级到 JDK 11 解决了它。

【讨论】:

以上是关于java.lang.NoClassDefFoundError: javax/crypto/spec/DESedeKeySpec的主要内容,如果未能解决你的问题,请参考以下文章