Java 为什么要显式地声明CLASSPATH选项,而path可以从类文件中推导出来
我知道为什么必须为Java 为什么要显式地声明CLASSPATH选项,而path可以从类文件中推导出来,java,classpath,Java,Classpath,我知道为什么必须为java命令提供类路径(SO中给出了许多很好的答案)。但我总是感到困惑,为什么默认情况下它不是从作为参数给出的.class文件路径推导出来的 e、 (这是一个愚蠢的例子…) 假设我在/home中,并且其中有/class/SomeClass.class文件 /home |_class |_SomeClass.class 如果我运行java-cp/home/class/SomeClass,程序(SomeClass)将成功运行 但是没有运行-cp选项(但是具有完整路径) j
java
命令提供类路径(SO中给出了许多很好的答案)。但我总是感到困惑,为什么默认情况下它不是从作为参数给出的.class文件路径推导出来的
e、 (这是一个愚蠢的例子…)
假设我在/home
中,并且其中有/class/SomeClass.class
文件
/home
|_class
|_SomeClass.class
如果我运行java-cp/home/class/SomeClass
,程序(SomeClass)将成功运行
但是没有运行-cp
选项(但是具有完整路径)
java./class/SomeClass
抛出异常(java.lang.NoClassDefFoundError)
说找不到主类…
这意味着,(除非我在同一个目录中)JVM无法知道在哪里找到SomeClass.class文件,即使我明确声明在/class/
目录中查找它(在SomeClass之前加前缀)
在这种情况下,我觉得默认行为应该是考虑类路径所在的目录相同的类路径——通过路径计算。
是否有充分的理由总是使用
-cp
?您是真的将.java文件混入其中,还是说您所说的.java文件所在的“.class”文件?请使用软件包再次尝试您的示例。没有软件包并不常见。@puce我编辑了我的问题。。。但我知道一个非常愚蠢的例子。我只想再次表明我的观点:试着用软件包来重新表述你的问题。也许事情在路上会变得更清楚。