Class 即使 jar 在类路径上也没有发现异常/调试类路径问题

Class not found exception even if the jar is on the classpath / debugging classpath problems

我很难过,我尝试 运行 我的简单程序是这样的:

java -cp ~/FirmwareUpdate/bin:~/PureJavaHidApi/bin/purejavahidapi.jar:~/PureJavaHidApi/lib/jna-4.0.0.jar Test

然后我得到

Exception in thread "main" java.lang.NoClassDefFoundError: purejavahidapi/InputReportListener

在代码中首次访问 class 的位置。

我已经在 SO 和其他地方阅读了数十个答案,但没有找到答案。

一分钱终于掉了。

问题是除了类路径中的第一个条目外,主目录“~”引用不起作用,这真的让我偏离了轨道。因为它适用于第一个条目,所以我认为它对其他条目也适用。

问题来自于(事后看来很容易看出)主目录路径扩展是由 shell 完成的,而 shell 整个类路径条目看起来像一个参数因此扩展只在参数的开头发生一次。

我通过编写这个简单的 bash 脚本证实了这一点:

#!/bin/bash 
 for i; do 
    echo $i 
 done

将其另存为 'test' 并像这样尝试我的命令行:

./test -cp ~/FirmwareUpdate/bin:~/PureJavaHidApi/bin/purejavahidapi.jar:~/PureJavaHidApi/lib/jna-4.0.0.jar Test

输出:

-cp
/Users/nyholku/FirmwareUpdate/bin:~/PureJavaHidApi/bin/purejavahidapi.jar:~/PureJavaHidApi/lib/jna-4.0.0.jar
Test

正在确认诊断。