Java初学者往往对如何配置Java开发环境感到迷惑,论坛上也有很多朋友在询问关于JDK配置的问题,特别是配置之后,编译java文件的时候,总是碰到这样一个问题,错误提示为: Microsoft Windows 2000 [Version 5.00.2195] (C) 版权所有 1985-1998 Microsoft Corp. C:\>javac HelloWorld.java C:\>java HelloWorld Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld C:\> 以上为出错信息,源程序如下: class HelloWorld { public static void main(String[] args) { // Display "Hello World!" System.out.println("Hello World!"); } } 译通过 运行怎么就Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld???????/ 对于以上的问题,大家一贯的解决方法为,把HelloWorld.java文件所在目录的路径加入参数classpath中,如:set classpath=%classpath%;.;……(这里要注意其中的“.;”,一会儿我们做个试验看看到底是什么意思)。我试过了,好像不行,不知道是不是我没有配置好。至于给这个问题解答的网友有没有具体实践过,我不得而知。于是,我自己做了一次尝试。 我使用Win2000+JDK1.30,在java.sun.com下载j2sdk1_3_0-win.exe,然后点击安装,安装系统默认的路径,安装到c:盘,即:c:\jdk130。安装完成需要配置环境,这涉及到三个参数:path、classpath、java_home。在我的电脑-》属性-》高级-》环境变量 中,分别添加这三个变量,他们的值分别为: 名称=值 java_home=c:\jdk130 (安装路径) classpath=.;C:\jdk13\lib\tools.jar;C:\jdk13\lib\dt.jar;C:\jdk13\bin; path= C:\jdk13\bin; 然后确定就可以了。 注解:classpath用于指明所有用于引用的类所在的目录,它允许用户把自己的类放在不同的目录中,但应该让JDK编译工具知道它们在那里。例如: set classpath=.;C:\jdk13\lib\tools.jar;C:\jdk13\lib\dt.jar;C:\jdk13\bin; 命令中的第一个圆点指明classpath当前的工作目录。这个圆点非常有用,当不愿意输入完整的当前目录路径时,可以用它来代替,java程序允许这么做。 在d:新建子目录java,编写一个java文件,名字叫Hello.java,进入dos模式,进入到目录d:\java,然后敲入javac Hello.java,编译通过。然后可以使用java Hello运行生成的class文件,没有问题,结果正常输出。若是我们在Hello.java文件中的第一句加入:package hello; ,然后编译,没有出现错误,运行时我们会看到如下错误信息: Exception in thread "main" java.lang.NoClassDefFoundError: Hello (wrong hello/Hello) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:486) at java.security.SecureClassLoader.defineClass(SecureClassLoader. 1) at java.net.URLClassLoader.defineClass(URLClassLoader.java:248) at java.net.URLClassLoader.access0(URLClassLoader.java:56) at java.net.URLClassLoader.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:297) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:286) at java.lang.ClassLoader.loadClass(ClassLoader.java:253) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313) 这时,我们在编译的时候,应该这样:javac -d . Hello.java这样会在当前目录下产生一个新的子目录,目录名字就是hello。 我们可以用一下两种方法运行编译好的文件,在当前目录下,敲入:java hello/Hello或者java hello.Hello ,这样我们就可以看到运行结果了。
JAVA的入门基础一些精典 1.包package 在第一句引用package pkg1[.pkg2[.pkg3]];如果有一个例程Test.java:它的引用包:package hi; 先在当前目录下用javac -d . Test.java就会在当前目录下建立目录hi,将生成的Test.class文件放到./hi/下。 还有一种就是直接手工建立hi,把Test.java放到./hi/下,用javac hi/Test.java 和java hi/Test即可。 2.import java.io.*; 根据环境变量classpath来查找包,如果你自己创写一个jar或者是zip文件时,想调用他,一定要在classpath中写出来。 3.如果得到form表单传递的值和名称 Enumeration enum = request.getParameterNames(); while(enum.hasMoreElements()){ String paraName = (String) enum.nextElement(); String paraValue = (String) request.getParameter(paraName); } 4.不能在类的main和函数外用System.out.println,在静态函数中不能引用静态变量。 5.在类中,有实例变量和类变量两种,类变量就是被类中的所有对象共享。要用static. 方法有实例方法.类方法和构造器方法三种。第一种只有先创建对象再调用他。第二种要用static,可以直接调用他。 6.this是一个非静态的变量,不能与static并存。 7.如果一个JAVA程序没有包,在引用的时候,要用import 文件名。 8.如何去制造缺省值的参数呢? eg: function(arg1,arg2) eg: function(arg1) return function(arg1,'no'); 9.在JSP程式或者是SERVLET中,如果想退出程序执行,直接return就可以了。 10.新建一个类的另一种方法: Class _s = Class.forName('java.util.Date'); Date d = _s.newInstance(); 11.instanceof是判断一对象的引用是否某一类型。 eg: Interger i = new Integer(10); if(i instanceof Integer) T if(i instanceof Long) F -- 更多java精典:http://www.fls-cts.com/kkjvk/ |