java初学者,在cmd里运行java程序出错。

刚刚接触JAVA,于是参考书上说的去做,首先上SUN下载J2SE,不过没找到,据说是改名字了……于是下了一个叫jdk-6u16-windows-i586的程序,安装之后,在环境变量里也将PATH和CLASSPATH分别指向了安装出来的jdk文件夹下的bin和lib。之后写了一个简单的HelloWorld程序,然后到cmd里运行,用javac指令来编译时似乎还挺正常,但是用java指令来运行时,却不能正常运行了。显示的是:
Exception in thread "main" java.lang.NoClassDefFoundError:Coj
Caused by:(这里很多,略了)
Could not find the main class: Coj. Program will exit.

其中Coj是我的文件名……
不知道是我下载的程序下错了,还是自己的操作有什么不对的地方,希望知道的朋友能帮忙解答一下,真的太感谢了。如果能帮我解决,会再加分的。
类名的确也是Coj的没错。
程度是
public class Coj
{
public static void main(String args[])
{
System.out.println("Hello JAVA!");
System.out.println("I will be a good JAVA programmer!");

}

}

一句话:环境变量classpath(类路径)没有设置正确,使得JAVA虚拟机无法找到类来执行目标程序。

详细原因:java是通过java虚拟机来解释运行的,也就是通过java命令; javac编译生成的.class文件就是虚拟机要执行的代码, 称之为字节码(bytecode),虚拟机通过classloader来装载这些字节码,也就是通常意义上的类.这里就有一个问题,classloader从哪里知道java本身的类库及用户自己的类在什么地方呢?或者有着缺省值(当前路径).或者要有一个用户指定的变量来表明, 这个变量就是类路径(classpath),或者在运行的时候传参数给虚拟机.
通过这段文字,你就知道,为什么javac编译通过了,但是java命令却出错NoClassDefFoundError(类定义没找到)的原因了。
就是环境变量classpath(类路径)没有设置正确,使得JAVA虚拟机的classloader无法找到类来执行目标程序。

下面来搭建JDK1.6和Tomcat6.0的环境:

1、新建系统变量JAVA_HOME变量(JAVA_HOME指明JDK安装路径。)
设定值为:
C:\Java\jdk1.6.0_04

2、在系统变量中的path中添加(Path使得系统可以在任何路径下识别java命令。):
;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;%CATALINA_HOME%\bin

3、新建系统变量CATALINA_HOME
设定值为:
C:\Java\apache-tomcat-6.0.14

4、新建系统变量CLASSPATH(CLASSPATH为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别.)
设定值为:
.;%JAVA_HOME%\lib;%JAVA_HOME%\jre\lib;%CATALINA_HOME%\common\lib

注意一定要加“.”,“.”代表当前目录,即可到处建立.java文件,java class都能找到并编译运行用户的.java文件。

5、新建用户变量CLASSPATH(CLASSPATH为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别.)
设定值为:
.;%JAVA_HOME%\lib;%JAVA_HOME%\jre\lib;%CATALINA_HOME%\common\lib
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-10-14
http://java.sun.com/j2se/1.5.0/download.jsp

2.jdk1.5.0的安装
很简单,没什么可说的,只建议修改安装目录名成为jdk1.5.0

3.jdk1.5.0的配置
(假设jdk的安装目录是d:\jdk1.5.0)
右键点击[我的电脑],选择[属性],选择[高级]选项卡,单击[环境变量]按钮,在[系统变量]找到path变量,单击[编辑]按钮,把d:\jdk1.5.0\bin添加到里面,与已有的内容用分号隔开.
在[系统变量]中单击[新建]按钮,在[变量名]文本框中输入名称classpath,在[变量值]文本框中输入.;D:\jdk1.5\lib

4.编写HelloWorld
推荐刚入门时不要使用IDE,用简单的文本编辑器就可以了,比较好用的有Jcreator(可以不用进dos直接编译运行java程序),Editplus,UltraEdit
public class HelloWorld {
public static void main(String args[]) {
System.out.println("Hello World!");
}
}
保存为HelloWorld.java,注意文件名必须与声明为public类的类名完全相同,包括大小写

5.编译HelloWorld
在dos下进入HelloWorld.java文件所在目录,使用命令javac HelloWorld.java编译,注意HelloWorld.java大小写一定要正确

6.运行HelloWorld
使用命令java HelloWorld,注意HelloWorld大小写一定要正确,而且不要写.java后缀

7.java入门推荐书籍
java编程思想(thinking in java),虽然现在已经出第三版了,但是还是强烈推荐学习第二版,侯捷翻译的,第三版翻译的不好

8.java API
现在jdk5.0有中文版api了,只不过还没完全翻译完
浏览地址:http://gceclub.sun.com.cn/chinese_java_docs.html
下载地址:论坛里有网友做好的chm格式的API,可以免费下载
第2个回答  2009-10-14
我把我的Java环境配置给你看看吧 仅供参考下噢
Classpath :
C:\Program Files\Java\jdk1.5.0\lib\dt.jar;C:\Program Files\Java\jdk1.5.0\lib\tool.jar;
Path:
C:\Program Files\Java\jdk1.5.0\bin;
环境配置好后去DOS Java,和javac一下看看有反应没。要是有反应的话就是你程序的问题了噢。
注:
public class Coj {
public static void main(String args[]) {
System.out.println("Hello World!");
}
}
文件保存名一定要是Coj
第3个回答  2009-10-14
编辑你的 Coj.java文件,改为如下内容:

public class Coj {
public static void main(String args[]) {
System.out.println("Hello World!");
}
}
一定要保存为 Coj.java
javac Coj.java
java Coj

还有问题的话就是你的环境变量没配好
第4个回答  2009-10-14
里面有main么…… 把你下的程序发出来
相似回答