我有一个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] 删除。
我来说两句