通过命令行运行jar:一个桌面上的classnotfound异常

格蕾泽

我有一个Java脚本,该脚本由多个用户运行并且运行良好。

今天,我要求另一个用户在他的桌面上尝试该脚本,但他得到了ClassNotFoundException ...尽管该脚本与我的脚本完全相同(并且jar位置也相同)

这是启动启动JAR的命令:

java  -cp .;customname.jar;libs/* my.package.MyMainClass

我还尝试将每个jar分别添加到libs文件夹中:

java  -cp .;customname.jar;libs/lib.jar;libs/lib2.jar;libs/lib3.jar my.package.MyMainClass

这是用户得到的错误消息:

错误:找不到或加载主类ch.vaudoise.hp.services.listener.AutoSysReorder

我检查了JAVA配置,并尝试在“路径”环境变量上为他设置相同的Java版本。同样的错误。

由于有6位用户可以运行脚本,而只有1位用户出错,因此我确定这是一个配置问题。但是呢?类路径似乎还可以...

非常感谢您的帮助。

小桑蒂

首先,您必须首先找到冲突的类在哪里如果您不知道,则可以通过以下两种方法找到它:

  • 以编程方式:对该类进行编码,并使用相同的类路径(在没有问题的环境中)执行它: public static void main(String[] args) { System.out.println(ch.vaudoise.hp.services.listener.AutoSysReorder.class. getResource("/ch/vaudoise/hp/services/listener/AutoSysReorder.class")); }

  • 手动,一个接一个:打开命令外壳并执行:

    javap -cp。ch.vaudoise.hp.services.listener.AutoSysReorder

    javap -cp customname.jar ch.vaudoise.hp.services.listener.AutoSysReorder

    javap -cp libs / lib.jar ch.vaudoise.hp.services.listener.AutoSysReorder

    javap -cp libs / lib2.jar ch.vaudoise.hp.services.listener.AutoSysReorder

    ...

尝试在类路径中的每个条目中逐一尝试,直到找到该类为止。

一旦找到了类的位置,请在冲突的PC中打开外壳,并确保该路径可访问:

dir lib\conflicting-library-or-directory

另外,重复javap测试:

javap -cp conflicting-library-or-directory ch.vaudoise.hp.services.listener.AutoSysReorder

完成此测试后,您应该有更多的线索来查找问题的原因。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章