Java之路----帮你完成HelloWorld
转眼在csdn已经满月了,看到好多初学java的朋友会有关于错误提示Noclassdeffounderror………这样的问题,想到自己初学的时候也曾被这种郁闷的问题弄得焦头烂额,很多问题是不会在教科书里面有讲的,因为,教科书不会捕捉我们的“异常“:)。于是就整理了一下我见到的朋友们提出的问题,希望能对后来者有所帮助。
1.Java开发中系统环境变量设置(JDK):
工欲善其事,比先利其器。环境变量这一关,大家是必须要过的,下面是各种操作系统里面的环境设定。
Win2000/winXP中:
右键我的电脑à属性à高级à环境环境变量
classpath=.;jdk安装目\lib
path=jdk安装目录\bin
注意:一定不可忽略“.”,他表示的是我们的当前工作目录,没有他,会有很多麻烦出现的。
Winme中:
“开始à程序à附件à系统工具à系统信息“中,选择工具à系统配置实用程序à环境
设定:
classpath=.;jdk安装目\lib
path=jdk安装目录\bin
Win98中:
修改autocexe.bat 就是修改自动批处理文件。
添加:
set classpath=.;jdk安装目\lib
set path=jdk安装目录\bin;%path%
linuX中:
假设JDK安装在/home/jdk1.4.0/下,打开/etc/profile,在其中加入:
PATH="/home/jdk1.4.0/bin:$PATH"
CLASSPATH=.:/home/jdk1.4.0/jre/lib/rt.jar:/home/jdk1.4.0/lib/tools.jar
JAVA_HOME=/home/jdk1.4.0
export PATH CLASSPATH JAVA_HOME
2.设定好了我们的工作环境后,让我们来看一看我们的HelloWorld程序吧。
public Class HelloWorld {
public void HelloWorld(){
//构造函数
}
public static void main ( String args[] )
{
system.out.println ("HelloWorld!");
}
}
上面的程序有三处错误,看到了么?不要笑哦,这种错误确实会发生的。下面是把它改正过后的代码:
public class HelloWorld {
public HelloWorld(){
//构造函数
}
public static void main ( String args[] )
{
System.out.println ("HelloWorld!");
}
}
class和System的大小写,这个问题虽然一般不会出现,但大小写问题在整个java世界里确实是值得重视的一个基本问题,所以我把它写出来个大家提个醒,只要大家不用为这样的错误费时费力,大可认为我只是为了博您一笑。构造函数本来对HelloWorld来说是可有可无的,但是我有意添加这个构造函数,原因有两个:第一,构造函数没有返回值,大家都知道,就算是初学大概也会对此很不屑,1+1=2还拿出来干嘛。但是确实有很多初学者会返回一个void,void也是一种返回值,这个概念就是我的第一个目的了,有些初学者会认为void就是没有返回值,错!!!第二,你应该为你的类编写默认构造函数,就算他什么也不做,只起到和系统给你的默认构造函数一样的作用。当你不编写默认构造函数的时候,系统会给你一个,但是前提是你这个类里没有任何构造函数。忽略这个问题,可能会让你的继承体系出现问题。(可能这里说这些太早,所以教材上不会说,但这些东西,总是先记住的好,免得载大跟头)。(顺便说一句构造函数也可以是protected和private的,不是一定要public,别怪我蘑记^^。确实有很多人认为构造函数一定要public的,错!!!)。
3程序没问题,环境变量没问题,还是会出问题:)看看我们的执行要注意什么吧
不带包的编译:
javac 类名.java
java 类名
不带包的编译只要注意大小写,一般应该不会有问题了。
javac HelloWorld.java 不要写成 javac helloworld.java
java HelloWorld 不要写成java HelloWorld.class
另外,一般此时大家的工作目录和HelloWorld.java所在目录是相同的,这就是最开始环境变量”.”的作用了。
带包的编译:
javac -d 包的父目录 类名.java
java 包名.类名
这里要注意的是大家的工作目录要与包的父目录所在目录相同。
还有另外一个问题,大家先看一下问题的提出(跟HelloWorld关系虽然不大,但是问题也很有代表性)
我的包如下:
package c05;
public class PackagedClass{
public PackagedClass(){
System.out.println("Creating a packaged class");
}
public static void main(String[] args){}
}
程序如下:
//package c05;
import c05.PackagedClass;//如果换成import c05.*;就报错
public class Foreign{
public static void main(String[] args){
PackagedClass pc = new PackagedClass();
}
}
PackagedClass不是c05的子包阿,就是一个类阿,为什么用* 不行那?
这是论坛里一个朋友的问题。很郁闷吧:)
这里因为要import c05.PackagedClass;的类和c05.PackagedClass;在同一个目录内,就会出现上
面的问题,两个类不要放同一个地方了,赫赫,大家自己解决吧^^.希望这篇文章会对初学的你有
所帮助,如果你遇到过跟”HelloWorld”有关的问题这里没有提及,也希望帮忙填补一下:)。
本文地址:http://com.8s8s.com/it/it18000.htm