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教程并尝试搜索。tryjava-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