gpt4 book ai didi

命令行上的java相对路径与绝对路径

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:46:43 25 4
gpt4 key购买 nike

遇到一个有趣的问题当我运行时:

$cd /projects/MyProject/
$java -cp . S3Sample

这很好用。但是,如果我运行:

$java -cp /projects/MyProject /projects/MyProject/S3Sample
Error: Could not find or load main class .projects.MyProject.S3Sample

这是为什么。快速浏览了一下,找不到答案。谢谢!

最佳答案

我有这个文件夹结构:

- home
- org
- test
+ Foo.java
+ Foo.class

Foo.java 中的代码是一个简单的 hello world 应用程序:

//Note the usage of the package statement here.
package org.test;

public class Foo {
public static void main(String[] args) {
System.out.println("Hello world");
}
}

然后,在命令行中,为了执行 Foo.class,我应该提供类的完整名称(我在 cmd 的“/home”文件夹中):

$ java -cp "org/test;." Foo
Exception in thread "main" java.lang.NoClassDefFoundError: Foo (wrong name: org/test/Foo)
$ java -cp "org/test;." org.test.Foo
Hello world

现在,我编辑上面的类并删除 package 这句话:

//no package specified
public class Foo {
public static void main(String[] args) {
System.out.println("Hello world");
}
}

重新编译类并执行相同的命令行后:

$ java -cp "org/test;." Foo
Hello world
$ java -cp "org/test;." org.test.Foo
Exception in thread "main" java.lang.NoClassDefFoundError: org/test/Foo (wrong name: Foo)

长话短说

确保始终指定类的全名。检查你的类是否属于一个包。指定要执行的类的路径与写类的全名是一样的,java程序会将/替换为..

关于命令行上的java相对路径与绝对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24266526/

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