Java NoClassDef 通过终端执行时发现错误

Posted

技术标签:

【中文标题】Java NoClassDef 通过终端执行时发现错误【英文标题】:Java NoClassDef found error when executing via terminal 【发布时间】:2017-04-13 04:34:28 【问题描述】:

我正在尝试使用 Microsoft Azure blob 存储的数字签名项目。我使用 Eclipse Neon 构建了这个项目,它运行良好。

我想为同一个项目执行 java-callgraph,以便了解与 Azure 的运行时执行/交互。

我使用的终端命令是:

java -Xbootclasspath:/usr/lib/jvm/java-8-oracle/jre/lib/rt.jar:/home/pallavi/.m2/repository/com/microsoft/azure/azure-storage/4.0.0/azure- storage-4.0.0.jar:/home/pallavi/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.6.0/jackson-core-2.6.0.jar:/home/pallavi/。 m2/repository/org/slf4j/slf4j-api/1.7.12/slf4j-api-1.7.12.jar:/home/pallavi/.m2/repository/org/apache/commons/commons-lang3/3.4/commons- lang3-3.4.jar:/home/pallavi/.m2/repository/commons-codec/commons-codec/1.10/commons-codec-1.10.jar:/home/pallavi/.m2/repository/com/code/flexiprovider/ 1.7/flexiprovider-1.7.jar:/home/pallavi/.m2/repository/com/code/CoDec/21/CoDec-21.jar:/home/pallavi/Experiment/Azure/target/Azure-0.0.1-SNAPSHOT .jar -javaagent:/home/pallavi/git/java-callgraph/target/javacg-0.1-SNAPSHOT-dycg-agent.jar -jar /home/pallavi/Experiment/Azure/target/Azure-0.0.1-SNAPSHOT.jar

我也试过了:

java -Xbootclasspath:/usr/lib/jvm/java-8-oracle/jre/lib/rt.jar:/home/pallavi/Experiment/Azure/target/Azure-0.0.1-SNAPSHOT.jar -javaagent:/home/pallavi/git/java-callgraph/target/javacg-0.1-SNAPSHOT-dycg-agent.jar -classpath /home/pallavi/.m2/repository/com/microsoft/azure/azure-storage/4.0.0/azure-storage-4.0.0.jar:/home/pallavi/.m2/repository/com/fasterxml/ jackson/core/jackson-core/2.6.0/jackson-core-2.6.0.jar:/home/pallavi/.m2/repository/org/slf4j/slf4j-api/1.7.12/slf4j-api-1.7。 12.jar:/home/pallavi/.m2/repository/org/apache/commons/commons-lang3/3.4/commons-lang3-3.4.jar:/home/pallavi/.m2/repository/commons-codec/commons- codec/1.10/commons-codec-1.10.jar:/home/pallavi/.m2/repository/com/code/flexiprovider/1.7/flexiprovider-1.7.jar:/home/pallavi/.m2/repository/com/code/ CoDec/21/CoDec-21.jar -jar /home/pallavi/Experiment/Azure/target/Azure-0.0.1-SNAPSHOT.jar

我得到了

的 NoClassDef 错误

javax/crypto/BadPaddingException

,而项目与 eclipse IDE 本身完美运行。

我尝试了针对发布的同一问题的解决方案,但错误仍然存​​在。这是一个 maven 项目,pom.xml 具有所有依赖项。

有人可以帮我解决这个问题或建议一种可以通过 eclipse IDE 执行 java-callgraph 以达到相同目的的方法吗?

【问题讨论】:

【参考方案1】:

根据您的描述,根据我的经验,我认为您的命令中缺少引用的库jce.jar,这些库包含在路径jre/lib/中。

同时,我建议您可以参考eclipse help page导出一个可运行的jar文件,将所有引用的库打包,以减少终端命令长度。

希望对您有所帮助。有任何问题,请随时告诉我。

【讨论】:

以上是关于Java NoClassDef 通过终端执行时发现错误的主要内容,如果未能解决你的问题,请参考以下文章

运行使用 maven 构建的 jar 时的 FlinkMLTools NoClassDef

为啥在执行 Java Stream 终端操作时对象没有被垃圾收集?

Java - 从终端运行 jar 可以工作,但双击会中断功能

MacOS终端下执行一个简单Java脚本

Cassandra性能测试

mac的终端通过code .指令快速启动vscode