我今天第一次写了一个"welcome"程序,javac篇译通过,但为什么运行时提示没定义类呢?
我的是这样写的:
public class Welcome
{
public static void main(String[] args)
{
System.out.println(" Welcome you!");
}
}
效果如下:
E:\JLessson>javac welcome.javaE:\JLessson>java welcome.java
Exception in thread "main" java.lang.NoClassDefFoundError: welcome/java
请问这是为什么?教材也是这么写的.
我的是这样写的:
public class Welcome
{
public static void main(String[] args)
{
System.out.println(" Welcome you!");
}
}
效果如下:
E:\JLessson>javac welcome.javaE:\JLessson>java welcome.java
Exception in thread "main" java.lang.NoClassDefFoundError: welcome/java
请问这是为什么?教材也是这么写的.
解决方案 »
- 求指点java+ajax的目录树设计
- 计算机专业的大学生学完java,能到哪工作?
- java
- jpopup menu 能够横过来吗?
- spring 如何与hibernate 结何呀?
- 求Cay S.Horstmann,Gary Cornell的《Java 2 核心技术 卷II:高级性能》电子版,最好是中文的(100分,急~~!)
- 求大神用java实现CRC-16校验,输入 AB 12 BC 3D 输出AB 12 BC 3D 31 14这种格式。
- 使用jspsmartupload上传文件名为中文的文件时的问题?
- 汉子返回(JTextPane)?大小,颜色设置?在线解决给分。
- 奇怪!奇怪!真奇怪!!!
- JRE是什么东西?
- 疯了疯了!!怎么弄也解决不了,没有办法了,请给为大虾指点!关于数据库编程方面的!!小弟先有礼了!
public static void main(String[] args) {
System.out.println("Hello, world");
}
}再次保存文件。8. 在命令行窗口中输入cd C:\JavaTest将当前路径转入JavaTest中。然后,输入javac Hello.javaJDK就在JavaTest文件夹中编译生成一个Hello.class的类文件。如果出现“1 error”或“XX errors”的字样,说明是源代码的输入有误,请根据出错提示,仔细地按第7步的代码找出并修正错误。请读者注意甄别代码输入有误的问题与classpath设置有误的问题。因为本文是关于如何正确设置classpath及package的,因此,这里假设读者输入的代码准确无误。到目前为此,由于我们是在源代码的当前路径下编译,因此,不会出现classpath设置有误的问题。9. 在命令行窗口中输入java Hello屏幕出现了Hello world成功了,我们已经顺利地编译及运行了第一个Java程序。
如果是将 这个java文件放在一个包内 那么 在CMD 下面编译会有问题 你可以直接游击 该JAVA 文件选择RUN--〉APPLICATIOn 然后在控制台可以看见输出效果了下面是我再控制台里面尝试编译 ECLIPSE 下面的 JAVA 测试文件(我原来是直接用上面的方法测试的)就有楼主的那个问题 呵呵那位高手解释一下啊 偶也是初学阿
=========================================================================================Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.C:\Documents and Settings\Alex>cd\C:\>d:D:\>d:\eclipse
'd:\eclipse' 不是内部或外部命令,也不是可运行的程序
或批处理文件。D:\>cd eclipseD:\eclipse>cd workspaceD:\eclipse\workspace>dir
驱动器 D 中的卷没有标签。
卷的序列号是 34A3-C818 D:\eclipse\workspace 的目录2005-09-20 21:19 <DIR> .
2005-09-20 21:19 <DIR> ..
2005-09-13 22:23 <DIR> .metadata
2005-09-13 22:24 <DIR> JavaDemo
2005-09-20 21:19 <DIR> MyStruts
2005-09-16 22:02 <DIR> StrutsNitroxTest
0 个文件 0 字节
6 个目录 6,654,255,104 可用字节D:\eclipse\workspace>cd javademoD:\eclipse\workspace\JavaDemo>dir
驱动器 D 中的卷没有标签。
卷的序列号是 34A3-C818 D:\eclipse\workspace\JavaDemo 的目录2005-09-13 22:24 <DIR> .
2005-09-13 22:24 <DIR> ..
2005-09-13 22:24 236 .classpath
2005-09-13 22:24 384 .project
2005-09-20 21:38 <DIR> classes
2005-09-20 21:38 <DIR> src
2 个文件 620 字节
4 个目录 6,654,255,104 可用字节D:\eclipse\workspace\JavaDemo>cd srcD:\eclipse\workspace\JavaDemo\src>dir
驱动器 D 中的卷没有标签。
卷的序列号是 34A3-C818 D:\eclipse\workspace\JavaDemo\src 的目录2005-09-20 21:38 <DIR> .
2005-09-20 21:38 <DIR> ..
2005-09-13 22:25 <DIR> com
2005-09-20 21:38 111 Welcome.java
1 个文件 111 字节
3 个目录 6,654,255,104 可用字节D:\eclipse\workspace\JavaDemo\src>dir
驱动器 D 中的卷没有标签。
卷的序列号是 34A3-C818 D:\eclipse\workspace\JavaDemo\src 的目录2005-09-20 21:38 <DIR> .
2005-09-20 21:38 <DIR> ..
2005-09-13 22:25 <DIR> com
2005-09-20 21:38 111 Welcome.java
1 个文件 111 字节
3 个目录 6,654,255,104 可用字节D:\eclipse\workspace\JavaDemo\src>javac Welcome.javaD:\eclipse\workspace\JavaDemo\src>java Welcome
Hello, worldD:\eclipse\workspace\JavaDemo\src>cd comD:\eclipse\workspace\JavaDemo\src\com>cd fangypD:\eclipse\workspace\JavaDemo\src\com\fangyp>dir
驱动器 D 中的卷没有标签。
卷的序列号是 34A3-C818 D:\eclipse\workspace\JavaDemo\src\com\fangyp 的目录2005-09-13 22:25 <DIR> .
2005-09-13 22:25 <DIR> ..
2005-09-20 21:40 <DIR> test
0 个文件 0 字节
3 个目录 6,654,255,104 可用字节D:\eclipse\workspace\JavaDemo\src\com\fangyp>cd testD:\eclipse\workspace\JavaDemo\src\com\fangyp\test>dir
驱动器 D 中的卷没有标签。
卷的序列号是 34A3-C818 D:\eclipse\workspace\JavaDemo\src\com\fangyp\test 的目录2005-09-20 21:40 <DIR> .
2005-09-20 21:40 <DIR> ..
2005-09-20 21:36 441 HelloWorld.class
2005-09-13 22:26 467 HelloWorld.java
2005-09-20 21:33 437 Welcome.class
2005-09-20 21:40 137 Welcome.java
4 个文件 1,482 字节
2 个目录 6,654,255,104 可用字节D:\eclipse\workspace\JavaDemo\src\com\fangyp\test>javac Welcome.javaD:\eclipse\workspace\JavaDemo\src\com\fangyp\test>dir
驱动器 D 中的卷没有标签。
卷的序列号是 34A3-C818 D:\eclipse\workspace\JavaDemo\src\com\fangyp\test 的目录2005-09-20 21:40 <DIR> .
2005-09-20 21:40 <DIR> ..
2005-09-20 21:36 441 HelloWorld.class
2005-09-13 22:26 467 HelloWorld.java
2005-09-20 21:41 436 Welcome.class
2005-09-20 21:40 137 Welcome.java
4 个文件 1,481 字节
2 个目录 6,654,255,104 可用字节D:\eclipse\workspace\JavaDemo\src\com\fangyp\test>java Welcome
Exception in thread "main" java.lang.NoClassDefFoundError: Welcome (wrong name:
com/fangyp/test/Welcome)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
3)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
如果前面不加public的话,你的名称可以任意定义,如果加了的话类的名称就必须和文件名称一样。
正常:
D:\eclipse\workspace\JavaDemo\src>java Welcome
Hello, world放在了COM.FANGYP.TEST 包里面为啥就出错了呢?
Exception in thread "main" java.lang.NoClassDefFoundError: Welcome (wrong name:
com/fangyp/test/Welcome)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
3)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
我试着去掉了前面的public 还是有同样的错误.注:我的代码是在UltrEdit32里写的.
代码大家看过了,没有错误的,
是不是classpath有问题呢?
我是在相应的文件夹下进行编译的,应该不存在classpath问题.
前面师兄 javadiablo(吃菠萝的)说的ECLIPSE是什么我也还不明白.
还有我在系统环境变量里设置了path的值为C:\j2sdk1.4.2_09\bin,并保存了.
而在命令行里却没有,怪了,是这样显示的:
E:\JLessson>set path
Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Co
mmon Files\Ulead Systems\MPEG
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
是不是少了C:\j2sdk1.4.2_09\bin呢?
大家能分析下吗?谢谢!!!!!
classpath=".;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar"
应该可以了!当前目录务必要加上!
C:\JavaTest>javac Hello.javaC:\JavaTest>java Hello
Exception in thread "main" java.lang.NoClassDefFoundError: HelloC:\JavaTest>环境变量设置应该没问题:C:\JavaTest>java
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)where options include:
-client to select the "client" VM
-server to select the "server" VM
-hotspot is a synonym for the "client" VM [deprecate
The default VM is client. -cp <class search path of directories and zip/jar files>
-classpath <class search path of directories and zip/jar f
A ; separated list of directories, JAR archi
and ZIP archives to search for class files.
-D<name>=<value>
set a system property
-verbose[:class|gc|jni]
enable verbose output
-version print product version and exit
-showversion print product version and continue
-? -help print this help message
-X print help on non-standard options
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
enable assertions
-da[:<packagename>...|:<classname>]
-disableassertions[:<packagename>...|:<classname>]
disable assertions
-esa | -enablesystemassertions
enable system assertions
-dsa | -disablesystemassertions
disable system assertionsC:\JavaTest>
运行javac也可以....限于篇幅不贴了.
各位帮忙想想 到底是哪里出问题了....
主要在于大小写的形式上!
classpath=".;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar"
应该可以了!当前目录务必要加上其实也就是包问题。不过对于新手 不说包 但这个类路径往往忘了加,因为只要设置了JAVA_HOME 显示下面这些是行的
C:\JavaTest>java
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)
………………
而且也能编译 但不能加载类 因为加载类也得给它指明方向嘛!
bobking1983(bob-king) ( ) 说的:
运行的时候直接java 类名 就可以了不能写成java 类名.class 或 类名.java还有就是注意大小写
有时大小写也不敏感的,小写也能过.