Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-从终端运行my prog并获取以下错误消息(w/NoClassDefFoundError)_Java_Terminal_Noclassdeffounderror - Fatal编程技术网

Java-从终端运行my prog并获取以下错误消息(w/NoClassDefFoundError)

Java-从终端运行my prog并获取以下错误消息(w/NoClassDefFoundError),java,terminal,noclassdeffounderror,Java,Terminal,Noclassdeffounderror,可能重复: 我真的迷路了。我有一个foo/boo/目录,其中有Prog.class和一些其他点类文件。foo是我运行命令的当前目录的子目录。我编译得很好,在我的foo/boo/目录中,我检查了确保确实存在一个“Prog.class”以及我需要的所有其他点类文件。在我的Prog类中有一个main方法,我很确定这个问题与我的源代码无关(尽管它当然可以),因为我能够在eclipse中很好地运行Prog,而不是从我的终端(ssh)运行到另一台机器上) 有人能试着破译这些混乱的东西是什么意思吗?我真的不

可能重复:

我真的迷路了。我有一个foo/boo/目录,其中有Prog.class和一些其他点类文件。foo是我运行命令的当前目录的子目录。我编译得很好,在我的foo/boo/目录中,我检查了确保确实存在一个“Prog.class”以及我需要的所有其他点类文件。在我的Prog类中有一个main方法,我很确定这个问题与我的源代码无关(尽管它当然可以),因为我能够在eclipse中很好地运行Prog,而不是从我的终端(ssh)运行到另一台机器上)


有人能试着破译这些混乱的东西是什么意思吗?我真的不明白。非常感谢。

从foo/boo/Prog之外开始,即当前目录是foo的父目录,并按照@grtt1所说的方式运行

有效的样本

suzan@nebulla:~/Test_Java_01$ ls
foo
suzan@nebulla:~/Test_Java_01$ ls foo
boo
suzan@nebulla:~/Test_Java_01$ ls foo/boo
Prog.class  Prog.java
suzan@nebulla:~/Test_Java_01$ cat foo/boo/Prog.java
package foo.boo;

public class Prog {
    public static void main(String[] args) {
        System.out.println("Hello world");
    }
}
suzan@nebulla:~/Test_Java_01$ java foo.boo.Prog
Hello world

从foo/boo/Prog之外开始,即当前目录是foo的父目录,并按照@grtt1的方式运行

有效的样本

suzan@nebulla:~/Test_Java_01$ ls
foo
suzan@nebulla:~/Test_Java_01$ ls foo
boo
suzan@nebulla:~/Test_Java_01$ ls foo/boo
Prog.class  Prog.java
suzan@nebulla:~/Test_Java_01$ cat foo/boo/Prog.java
package foo.boo;

public class Prog {
    public static void main(String[] args) {
        System.out.println("Hello world");
    }
}
suzan@nebulla:~/Test_Java_01$ java foo.boo.Prog
Hello world

我可能是误解了(并且没有足够的时间对问题进行评论),但是你是说你有一个Prog目录,里面有一个Prog.class吗?这不就是foo.boo.Prog.Prog吗?

我可能有点误解(并且没有足够的时间来评论问题),但你是说你有一个Prog目录,里面有一个Prog.class吗?那不就是foo.boo.Prog.Prog吗

$ java -h
Usage: java [-options] class [args...]
           (to execute a class)
您试图指定类文件的文件系统路径,这是不可能的。您需要正确指定类路径,以便类加载器可以找到该类

类路径是一组路径,java类加载器在其中查找要加载的类。因此,在-cp参数之后指定正确的文件夹就可以了

您试图指定类文件的文件系统路径,这是不可能的。您需要正确指定类路径,以便类加载器可以找到该类



类路径是一组路径,java类加载器在其中查找要加载的类。因此,在-cp参数之后指定正确的文件夹就可以了。

试试
java-cp.:foo/boo/Prog
@qrt1:Nope,得到了同样的结果。作为旁注,在Prog中,我在顶部声明“package foo.boo”。编译后的Prog.class文件也在foo/boo/(我运行它的目录下的两个目录)目录中。不确定这是否有帮助。您知道“javac”接受文件名,“java”接受类名吗?“foo/boo/Prog”是有效的类名吗?@Tim,不是,有效的类名是“foo.boo.Prog”。像这样的问题已经有一百万个了。请先阅读java教程并尝试搜索。try
java-cp.:foo/boo/Prog
@qrt1:Nope,得到了同样的结果。作为旁注,在Prog中,我在顶部声明“package foo.boo”。编译后的Prog.class文件也在foo/boo/(我运行它的目录下的两个目录)目录中。不确定这是否有帮助。您知道“javac”接受文件名,“java”接受类名吗?“foo/boo/Prog”是有效的类名吗?@Tim,不是,有效的类名是“foo.boo.Prog”。像这样的问题已经有一百万个了。请阅读java教程,并尝试先搜索。我只是这样做了,但仍然得到相同的错误。我也是从foo/boo/Prog的父级运行的,就像您在我的原始示例中所说的行在
Prog.java
文件的开头?啊,你有foo/boo/Prog作为目录吗?i、 你有文件foo/boo/Prog/Prog.class的完整路径吗?是的,我有包foo.boo;在Prog.java的开头,没有提到第二个问题(我最初在我的帖子中用了令人困惑的措词,现在我对它进行了编辑,希望能让它更清楚)。我只有foo/boo/作为目录,Prog.class驻留在那里。。。可能检查操作系统文件访问权限?可能JVM看不到文件,而您可以?你在Linux上吗?我只是这么做了,但仍然得到同样的错误。我也是从foo/boo/Prog的父级运行的,就像您在我的原始示例中所说的行在
Prog.java
文件的开头?啊,你有foo/boo/Prog作为目录吗?i、 你有文件foo/boo/Prog/Prog.class的完整路径吗?是的,我有包foo.boo;在Prog.java的开头,没有提到第二个问题(我最初在我的帖子中用了令人困惑的措词,现在我对它进行了编辑,希望能让它更清楚)。我只有foo/boo/作为目录,Prog.class驻留在那里。。。可能检查操作系统文件访问权限?可能JVM看不到文件,而您可以?你在Linux上吗?噢,哇,我用词的方式把它弄糊涂了,对不起。不,我没有prog目录,我有一个foo/boo/目录,其中有prog.class和其他一些点类文件。foo是我从中运行命令的当前目录的子目录;它确定类的逻辑位置;如果您没有包指令,那么您应该从与Prog.class相同的目录中运行,并说no patoh woops,这使我的措辞变得混乱,对不起。不,我没有prog目录,我有一个foo/boo/目录,其中有prog.class和其他一些点类文件。foo是我从中运行命令的当前目录的子目录;它确定类的逻辑位置;如果没有package指令,则应在与Prog.class相同的目录下运行,并指示no path