初级版FAQ

Sun的The Java FAQ:       go
ranchgirl提供的FAQ:    go
JDK下载:jdk 6.0  J2SE 5.0    J2SE 5.0 日本语    J2SE 1.4.1    J2SE 1.4.2 日本语
jdk 6.0文档下载:    chm格式    html格式
jdk 6.0在线文档:    jdk 6.0 online docs
jdk 6.0 turtorial:    jdk 6.0 turtorial    turtorial 下载
java ide下载:    netbeans    eclipse

论坛资源版精华:    论坛资源版精华


Q: JAVA的环境变量如何设置? A: 如果是Win95/98,在\autoexec.bat的最后面添加如下3行语句:
set JAVA_HOME=c:\j2sdk1.4.2
set PATH=%JAVA_HOME%\bin;%PATH%
set CLASSPATH=.;
看好了CLASSPATH中第一个“.”,这个代表当前目录,很多人HelloWorld没有运行起来大多是这个原因。

如果是Win2000或者XP,使用鼠标右击“我的电脑”->属性->高级->环境变量
系统变量->新建->变量名:JAVA_HOME 变量值:c:\j2sdk1.4.2
系统变量->编辑->变量名:Path 在变量值的最前面加上:%JAVA_HOME%\bin;
系统变量->新建->变量名:CLASSPATH 变量值:.;
CLASSPATH前面的那个"."和上面的意义是一样的。

Q:javac 不是有效的内部命令 A:有两个原因:1 没有安装jdk,安装了jre,这时候是可以运行java命令,但是javac不能运行。2 安装了jdk但路径设置不对,也就是path这个环境变量设置不对,请参考如上设置方法,一定要在path的最前边加上jdk的bin目录的路径。例如,如果设置了JAVA_HOME,那么在path前加【%JAVA_HOME%/bin;】

Q: JDK怎么使用? A: 按照提示把JDK安装成功,设置好环境变量,打开记事本,输入:

  HelloWorld 
   main(String[] args) 
System.out.println();
保存为HelloWorld.java ,注意保存时要选择"所有类型", 打开命令提示符(Dos),进入你保存文件的目录,
[i]javac HelloWorld.java[/i] (编译) 如果没错误,再
[i]java HelloWorld[/i] (运行)
java.sun.com官方关于第一个Java程序编写的教程.
Your First Cup of Java (for Microsoft Windows)

Q: 运行javac HelloWorld.java 为何“error:cannot read:HelloWorld.java 1 error” A: 首先检查文件名的的拼写,大小写是否正确,再看目录是否正确。可以在运行该命令的窗口中dir HelloWorld.java,看有无该文件。

Q: java HelloWorld 提示“NoClassDefFoundError: HelloWorld Eception in thread "main"”
A: 首先可能是你CLASSPATH没有设置正确,请按照上面的那个步骤进行设置。如果你路径设置正确了,请确认你的类名是否正确,JAVA中大小写是区分的,看看你的类名是否正确。

Q: 提示“Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld/java” A: 编译用“javac HelloWorld.java”,要扩展名。运行用“java HelloWorld”,不要扩展名。

Q: Applet 怎样运行? A: 主要有两种方法
1 JDK中的applet浏览器。
2 IE浏览器
这两种方法都要将Applet嵌入到 HTML 文件中,如
<applet code="MyApplet.class",width=200 height=150>
</applet>
保存在和源文件同目录下,文件名为xxx.html,如果用JDK中的applet浏览器看,就在命令提示符下运行
appletviewer xxx.html
用IE看直接双击 html 文件即可

Q: 为什么用IE运行Applet时,显示的就是一片空白 A: IE本身并不支持Applet 的运行,要去 java.sun.com 下载一个插件(java plug_in)

Q: NullPointerException的原因? A: NullPointerException发生的原因是操作了一个为null的变量,比如使用该为null变量的【.】操作.如
File[] fileSet= File[3];
fileSet[0].exists();

Q: 查看Applet不能运行的错误原因? A:对于用浏览器来查看的方式,如果是ie的话,可以通过工具-》Sun java控制台来看看是什么错误。其他浏览器也有类似的sun java控制台。

Q:为什么编译提示uses or overrides a deprecated API?(或java文件使用或覆盖了已过时的API) A:From jdk文档 java.langAnnotation Type Deprecated

programmers are discouraged from using, typically because it is dangerous, or because a better alternative exists. Compilers warn when a deprecated program element is used or overridden in non-deprecated code。

Q:为什么编译提示class YourClass(注:你的类名)is pubic, should be declared in a file named YourClass.java? A:有两种情况,只有一个解释。两种情况是:
1 把两个public类放在同一个文件中,这样就会出现该问题。
2 一个文件虽然只有一个公共类,但该文件的名字和public的类名不一致(注意大小写,必须和你的public的类的名字大小写完全一样)。

一个解释也就很清楚了,public类所在的文件名不是“类名+.java”。改正的方法也很明白了,一个java文件中只有一个public类,并且该文件名的大小写和public的类的类名完全一致。

Q:uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
A:和泛型有关。不过只是个Note,你可以不用管它。
在1.5中,使用util中的类时,如List,希望你指定特定的类型,如List<String>,这样就只能add String类型的元素。如果没有参数化集合类,就会出现这样的提示,你可用 javac -Xlint:unchecked编译来试试。

Q:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6 A:数组越界,访问数组下标为6的元素时发生的越界异常。

Q:编译提示:不是抽象的,并且未覆盖超类或接口中的抽象方法。
例如如下代码:

  check  Applet  ItemListener
  init() 
.......


itemStateChange(ItemEvent e) ......
编译提示:check不是抽象的,并且未覆盖java.awt.event.itemListener中的抽象方法:itemStateChanged(java.awt.event.ItemEvent)

A: 编译提示中说得很明确。check实现了ItemListener,但却没有覆盖其中的抽象方法:itemStateChanged(java.awt.event.Item.Event)。检查上边的代码,其中的方法名错写成itemStateChange,最后一个单词是Changed。
在java中,如果类继承了超类,或是实现了接口,而没有实现其中的抽象方法,该类必须被声明为abstract类,否则就会出现如上的提示。出现这种错误的原因有三:1 没有写这个方法。2 写这个方法了,但是方法的签名和需要的不一样,容易出现方法名写错。3 参数类型不一致,参数顺序不一致。其中方法名写错最容易出现。
这种情况下,仔细对照ItemListener的API文档,看看自己写的方法和其中的抽象方法的方法名,参数类型,参数顺序是否相同。
在jdk 1.5及以后,在override地方可以使用【@Override】放在override的方法前,这样如果没有override,编译器会有提示。如上述代码:
@Override   itemStateChanged(ItemEvent e)
...............

仔细检查应该可以发现问题,那时必将会心一笑,原来如此简单,:)。

Q:jar打包后运行提示找不到主类 A: 1 清单mainfest文件中必须指定了Main-Class类,并且该类可有main方法,在未打包前可运行
2 清单文件的问题 a Main-Class后的冒号和class类名之间必须且只能有一个空格。
b 清单文件的最后必须有一个新行或回车,而不是空行,方法是在文件的末尾按一下回车。

更详细的内容请看精华中 再议JAR文件

Q:运行程序提示OutOfMemoryError: Java heap space A: 1 可以看看jdk文档中该类的解释 2 java有-X选项可以用来指定虚拟机的可用内存,具体的选项可以用运行 java -X得到。其中有两个和这个有关:
-Xms<size> set initial Java heap size
-Xmx<size> set maximum Java heap size

可以用如下方式指定使用的内存大小 java -Xmx200m 这表示允许虚拟机最大使用200m的内存

Q:运行程序提示StackOverflowError A: 1 可以看看jdk文档中该类的解释 2 调用的时候会把主叫方法压入堆栈中,这样被调用的方法返回的时候就取出主叫方法。在递归很多的程序中,比如QuickSort中,有很多次递归,堆栈大小不够,就会出现这种错误。在运行的时候可以指定所用的堆栈大小,可以用java -X得到。有关的项如下
-Xss<size> set java thread stack size
可以用如下方式指定使用的堆栈大小 java -Xss400k

转载于:https://www.cnblogs.com/nbalive2001/archive/2008/08/28/1278295.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值