gpt4 book ai didi

java - 默认classpath当前目录异常

转载 作者:行者123 更新时间:2023-12-02 06:54:46 24 4
gpt4 key购买 nike

我正在尝试编译并运行简单的Java程序。该程序基本上打印出 hello world 短语。我没有指定 -cp 选项,并且没有 CLASSPATH 环境变量。因此用户类路径仅限于当前目录。

现在,编译效果非常好。

rustam@rustam-laptop:~/temp/bird_test$ javac Sparrow.java 

此命令生成所需的 .class 文件。当我尝试运行 .class 文件时,会发生奇怪的事情。以下命令效果很好。

rustam@rustam-laptop:~/temp/bird_test$ java Sparrow

但是当我尝试以下命令时

rustam@rustam-laptop:~/temp/bird_test$ java ./Sparrow

我收到以下错误:

Error: Could not find or load main class ..Sparrow

WTF!我认为符号 ./指的是当前目录。

最佳答案

java 将类名作为参数。它不需要文件路径。然后,类名 (Sparrow) 由 java 类加载器根据类路径解析为 .class 文件,即它在类路径中列出的每个目录和 jar 中查找 Sparrow.class 文件。

让我们举一个尊重良好实践的示例,因此不使用默认包:

package foo.bar;

public class Baz {
...
}

上述类的类名是foo.bar.Baz。要执行它,您必须使用

java foo.bar.Baz

并且java将在类路径中列出的所有目录中查找foo/bar/Baz.class。因此,如果类路径设置为 /hello/world,它将查找文件 /hello/world/foo/bar/Baz.class

关于java - 默认classpath当前目录异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17512470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com