无法从Windows XP命令行运行Java程序 - ClassNotFoundException

时间:2011-03-17 02:37:11

标签: java windows command-line windows-xp

我正在尝试通过执行以下操作从Windows XP CMD行创建并运行java程序,该程序失败。谁能告诉我什么看起来不对/还有什么可以尝试?

C:\> java -version
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) Client VM (build 19.1-b02, mixed mode)

C:\> mkdir c:\j\
C:\> cd c:\j\
C:\j\> notepad Test.java

(打开记事本,我在其中插入以下文本并保存,然后关闭。)

public class Test{
  public static void main(String[] args){
    System.out.println("hi");
  }
}

C:\j\> javac Test.java
C:\j\> java Test
Exception in thread "main" java.lang.NoClassDefFoundError: test
Caused by: java.lang.ClassNotFoundException: test
        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)
Could not find the main class: test.  Program will exit.

真正的问题是,当我尝试使用Eclipse调试项目时,我收到一条“无法创建Java虚拟机”的错误,并且我正在尝试测试编译&首先运行没有IDE的程序,以确保我的JDK安装有效。


更新:你说我的机器上设置了CLASSPATH是正确的,但是我仍然遇到异常。执行建议的行会产生:

C:\j>java -cp . Test
Exception in thread "main" java.lang.NoClassDefFoundError: test (wrong name: Test)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(Unknown Source)
        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$000(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)
Could not find the main class: test.  Program will exit.

4 个答案:

答案 0 :(得分:4)

看起来您的计算机上已经设置了CLASSPATH环境变量,并且该值不包含表示当前目录的传统“点”(。)。您可以告诉Java查看当前目录,如下所示:

java -cp。测试

(那是java空间破折号cp空间点空间测试)。

答案 1 :(得分:0)

此命令在屏幕上输出什么?

C:\j> ls

如果您看不到Test.class,请再次编译该程序,即javac Test.java,然后将其作为java Test执行

编辑: -

建议不要创建具有较小案例的类。请参阅Java coding convention。尝试手动删除Test.class。重新编译代码并再次运行。

答案 2 :(得分:0)

回答问题2,然后:你向我们展示的东西不是真正的剪切和粘贴。您遇到的问题是,用于命名Java源代码中的“Test”类的字母大小写以及用于在命令行上调用该类的字母大小写不匹配。根据错误消息,我会说源代码说“class Test”,但是你在命令行输入“java test”。

答案 3 :(得分:0)

这不是一个真正的答案,因为它不是理想的行为,但我的类被定义(并在命令行命令中被引用为“Test”,大写“T”,我看到了一个运行 - 时间错误,表示没有找到小写“t”的类“test”。 经过大量的反复试验,我将“Test.java”重命名为“test.java”,并编辑了源文件以定义“test”类而不是“Test”。之后,我重新编译并使用命令行命令运行程序:“java test”。现在它有效。我正在使用的Java安装显然不允许名称以大写字母开头的类......?