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 终端操作时对象没有被垃圾收集?