在Win7中找不到或加载主类,或在thread中找不到异常;“主要”;OSX中的java.lang.NoClassDefFoundError

在Win7中找不到或加载主类,或在thread中找不到异常;“主要”;OSX中的java.lang.NoClassDefFoundError,java,windows,macos,Java,Windows,Macos,我知道这里有很多类似的线索,但它们对我没有帮助 我曾尝试在Win7和OSX Mountain Lion中运行: 1) java测试 2) java-cp。试验 //Test.java class HelloWorld { public static void main(String[] args){ System.out.println("Hello World!"); } } 1) 对于Win7错误: 错误:无法找到或加载主类测试 2) OSX山狮错误: 线程

我知道这里有很多类似的线索,但它们对我没有帮助

我曾尝试在Win7和OSX Mountain Lion中运行: 1) java测试 2) java-cp。试验

//Test.java
class HelloWorld {
    public static void main(String[] args){
        System.out.println("Hello World!");
    }
}
1) 对于Win7错误:

错误:无法找到或加载主类测试

2) OSX山狮错误:

线程“main”java.lang.NoClassDefFoundError中出现异常:测试导致 by:java.lang.ClassNotFoundException:Test 位于java.net.URLClassLoader$1.run(URLClassLoader.java:202),位于java.security.AccessController.doPrivileged(本机方法) java.net.URLClassLoader.findClass(URLClassLoader.java:190)位于 loadClass(ClassLoader.java:306)位于 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)位于 loadClass(ClassLoader.java:247)

真的不知道这里怎么了…:(

谢谢,
Oscar

看起来您的类必须与文件名同名。

test.java
必须包含
class test

文件名应与类名
相同,该类名为public
且具有main()方法。 在您的情况下,重命名
Test.java中的文件名将编译并创建HelloWorld.class文件而不是Test.class,因为您的文件中没有声明测试类

创建.class文件后,使用
JavaHelloWorld

下面是一个例子

//Filename abc.java
public class hi
{
public static void main(String[] args)
{
 System.out.println("Hell");
}
}
输出

abc.java:1: class hi is public, should be declared in a file named hi.java
public class hi
       ^
1 error
但是如果你这样做

 //Filename abc.java
    class hi
    {
    public static void main(String[] args)
    {
     System.out.println("Hell");
    }
    }
它将创建hi.class文件,以便

D:\>java hi
Hell

您的类名必须与您的文件相同,并且您的类目录位置必须可翻译为您的类包。这就是Java支持名称空间的方式,未声明包被称为默认名称空间-不建议使用默认名称空间

i、 e


My
Test.java

class HelloWorld {
  public static void main(String[] args) {
    System.out.println("HW");
  }
}
我与bash的对话框

Neoten:bin marko$ls-al
总数8
drwxr-xr-x。
drwxr-xr-x。。
-rw-r--r--HelloWorld.class
drwxr-xr-x测试
Neoten:bin marko$java HelloWorld
硬件
尼奥滕:本马尔科美元

您没有发布运行它的目录的内容,因此这是导致错误的最可能的原因。

谢谢,但它没有帮助。我记得Eclipse曾经抱怨类的名称应该与声明的类相同,并且大写字母。javac Test.java工作正常。将文件名重命名为HelloWorld.java仍然会导致错误ame错误。您确定要将其重命名为HelloWorld.java吗?您是否先编译它1)javac HelloWorld.java 2)java HelloWorld。另外,检查您是否有jdk和jreNo。据我所知,如果有main方法,我可以使用java进行编译。我有了它:publicstaticvoidmain(String[]args)javac工作得很好。问题是用java编译。我想使用“java HelloWorld”生成HelloWorld.class,它在哪里(文件夹)创建类文件?我尝试运行它的方式应该在与.java文件相同的目录中创建.class文件。尽管问这个问题很愚蠢,但仍然希望确认。。。您使用javac创建类文件了吗?正如我已经提到的,javac对我来说很好。现在我再次证明,我错误地认为java也可以编译。我提出了一个非常愚蠢的问题。你的意思是说你没有运行javac吗?在这种情况下,问题就解决了……我想做的就是用java(而不是javac)编译,然后您应该学习java的基本知识:
java
启动JVM,它加载编译后的
.class
文件。它与
.java
文件无关。你的意思是我不能通过运行“java HelloWorld”来编译HelloWorld.java吗?是的,我的意思是肯定的。
class HelloWorld {
  public static void main(String[] args) {
    System.out.println("HW");
  }
}