java命令的使用问题,比较的蹊跷。。。。请指教

软件和网站开发以及相关技术探讨
回复
Simon_Ghost
帖子: 39
注册时间: 2006-06-30 17:42

java命令的使用问题,比较的蹊跷。。。。请指教

#1

帖子 Simon_Ghost » 2006-08-15 1:56

先说明问题
一.JDK安装好了,环境变量设置好了,别的项目中的程序javac,java,javap......都可以使用了.
二,这个程序在eclipse3.2里可以运行正确.
三,这是一个Thinkinjava里面的程序,网上下载的,我加了一个thinkinjava的文件夹,所以运来的诸如c01,c02....都变成了thinkinjavaxiangmu下面的包了,开始有错误,我加了包的声明以后就没有错误了.
四,这些包里面的程序,javac和javap都没有错误.
程序如下:
package c02;
//: c02:HelloDate.java
// From 'Thinking in Java, 3rd ed.' (c) Bruce Eckel 2002
// www.BruceEckel.com. See copyright notice in CopyRight.txt.
import java.util.*;

/** The first Thinking in Java example program.
* Displays a string and today's date.
* @author Bruce Eckel
* @author www.BruceEckel.com
* @version 2.0
*/
public class HelloDate {
/** Sole entry point to class & application
* @param args array of string arguments
* @return No return value
* @exception exceptions No exceptions thrown
*/
public static void main(String[] args) {
System.out.println("Hello, it's: ");
System.out.println(new Date());
}
} ///:~


出错情况如下 :

ghostsimon@ghostsimon-laptop:~/workspace/thinkInJava/c02$ javac HelloDate.java
ghostsimon@ghostsimon-laptop:~/workspace/thinkInJava/c02$ java HelloDate
Exception in thread "main" java.lang.NoClassDefFoundError: HelloDate (wrong name : c02/HelloDate)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12 4)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)


请指教一下....谢谢
Simon_Ghost
帖子: 39
注册时间: 2006-06-30 17:42

#2

帖子 Simon_Ghost » 2006-08-15 2:00

Exception in thread "main" java.lang.NoClassDefFoundError: HelloDate
这句话。。。其实有HelloData.class这个类的。
jerometao
帖子: 128
注册时间: 2006-06-20 18:05
联系:

#3

帖子 jerometao » 2006-08-15 7:40

你到thinkinjava目录里执行java c02/xxx试试
Simon_Ghost
帖子: 39
注册时间: 2006-06-30 17:42

#4

帖子 Simon_Ghost » 2006-08-15 10:22

为什么这样就可以了呢???我试了。。。可以了阿。。。是不是环境变量出错了??
jerometao
帖子: 128
注册时间: 2006-06-20 18:05
联系:

#5

帖子 jerometao » 2006-08-15 10:42

不是环境变量的问题,而是默认的执行目录是工程的文件夹
Simon_Ghost
帖子: 39
注册时间: 2006-06-30 17:42

#6

帖子 Simon_Ghost » 2006-08-15 10:43

这个应该怎么改呢??
janusle
帖子: 36
注册时间: 2006-08-14 11:40

#7

帖子 janusle » 2006-08-15 23:08

怀疑是环境变量那个classpath没有设置"."就是当前目录,所以它不在当前目录下找那个class,找不到,自然没有main了。解决办法是要么java ./*.class
或者到环境变量中添加
cnbiz850
帖子: 178
注册时间: 2006-02-14 9:52
来自: 西双版纳

#8

帖子 cnbiz850 » 2006-08-24 17:23

因为你的源码中定义
package c02;
所以你必须在HelloDate.class的上级目录(含c02的目录)下按如下方式执行:
java c02.HelloDate
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

#9

帖子 oneleaf » 2006-08-24 22:54

楼上正解。
回复