我正在尝试通过执行以下操作从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.
答案 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安装显然不允许名称以大写字母开头的类......?