-1

我有这样的代码,

import javapasswordsdk.PSDKPassword;
import javapasswordsdk.PSDKPasswordRequest;
import javapasswordsdk.exceptions.PSDKException;

etc.............

我遇到错误,它正在使用 javapasswordsdk.PSDKPassword; javapasswordsdk.PSDKPasswordRequest 但不接受 javapasswordsdk.exceptions.PSDKException

所有这些类都在一个 jar 文件中。我的问题是为什么它会采取其他方式。

请尽快澄清。

 Exception in thread "main" java.lang.NoClassDefFoundError:javapasswordsdk/exceptions/PSDKException
    at beans.MigrateData.main(Unknown Source)
 Caused by: java.lang.ClassNotFoundException: javapasswordsdk.exceptions.PSDKException
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 1 more
4

3 回答 3

1

我的猜测是你的beans.MigrateData类在一个 jar 文件中,而这些javapasswordsdk类在另一个文件中。所以你可能想要:

java -cp beans.jar:javapasswordsdk.jar beans.MigrateData

(或类似的东西)。

基本上,您需要确保javapasswordsdk类在执行时位于类路径中。我们真的不知道你是如何尝试运行你的代码或它是如何打包的,所以上面只是一个猜测——但你应该能够适当地调整它。

编辑:现在我们可以看到您是如何运行它的,问题是您在类路径中使用了错误的分隔符。在 Unix 上,您使用:而不是;分隔条目:

Windows: java -cp jar1;jar2;jar3
Unix:    java -cp jar1:jar2:jar3
于 2013-05-10T11:41:01.273 回答
0

确保所有需要的 jar 都在 ClassPath 中:因为NoClassDefFoundError

如果 Java 虚拟机或 ClassLoader 实例尝试加载类的定义(作为正常方法调用的一部分或作为使用 new 表达式创建新实例的一部分)并且找不到类的定义,则抛出此异常。

于 2013-05-10T11:41:52.597 回答
0

消息很清楚:javapasswordsdk.exceptions.PSDKException;在类路径中找不到。

因此,该类似乎不在您认为它所在的 jar 中,或者该 jar 未正确添加到类路径中。

于 2013-05-10T11:42:56.640 回答