Java 在主类中使用包名会导致NoClassFoundException

Java 在主类中使用包名会导致NoClassFoundException,java,Java,我的代码: 现在,当我编译并运行它时,代码将正常工作,但是当我取消注释第一行时,当我尝试运行它时,它将抛出一个异常 java Bar 它将抛出以下命令: java.lang.NoClassDefFoundError: Bar (wrong name: Foo/Bar) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java

我的代码:

现在,当我编译并运行它时,代码将正常工作,但是当我取消注释第一行时,当我尝试运行它时,它将抛出一个异常

java Bar
它将抛出以下命令:

java.lang.NoClassDefFoundError: Bar (wrong name: Foo/Bar)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Exception in thread "main" 
当我尝试以这种方式运行它时:

javafoo.Bar

我会得到这个:

Error: Could not find or load main class Foo.Bar
执行以下操作时,将生成相同的输出:

java -classpath ./ Foo.Bar

即使我确实指定了当前路径的完整路径,并且我认为这不必要,但我这样做了,我仍然会看到消息:“无法找到或加载…”。

当您添加包
Foo
时,您还应该更改文件夹结构:

 //before:
 ./Bar.java

 //after adding Foo package:
 ./Foo/Bar.java
然后按如下方式运行它:

./java Foo.Bar
(注意:您应该在
目录中,而不是
/Foo

检查:

上面链接的引用:

然后,将源文件放在一个目录中,该目录的名称反映了该类型所属包的名称:

 .....\graphics\Rectangle.java

发布您的文件夹结构和执行命令的文件夹。只有这个文件Bar.class,其他什么都没有,或者文件夹结构是什么意思?更改代码后是否重新编译了代码?
Foo
文件夹是否出现?从哪里调用
java-classpath./Foo.Bar
命令?从Bar.class所在的同一文件夹,是的,我确实重新编译了“从Bar.class所在的同一文件夹”你是说
Foo
文件夹吗?好的,我这样做了,我的文件夹结构如下:/Foo/Bar.java和/Foo/Bar.class,如Oracle文档所述,它也会编译,但当我尝试执行它时,它会抛出相同的noclassdeffound异常,或者当我将cd发送到Foo时,键入java Foo.Bar,它会再次说“错误:找不到或加载主类Foo.Bar”不要将cd发送到Foo,您应该与Foo目录位于同一目录中。请参阅我编辑的回复。
 //in the Rectangle.java file 
 package graphics;
 public class Rectangle {
    ... 
 }
 .....\graphics\Rectangle.java