2007-4-29 10:05
dangjr1919
Java常见问题集锦
[font=宋体][size=10.5pt]问[/size][/font][font=Arial][size=10.5pt]: [/size][/font][font=宋体][size=10.5pt]如何设置[/size][/font][font=Arial][size=10.5pt]Java 2(JDK1.2)[/size][/font][font=宋体][size=10.5pt]的环境变量[/size][/font][font=Arial][size=10.5pt]?
[/size][/font][font=宋体][size=10.5pt]答[/size][/font][font=Arial][size=10.5pt]:
Java 2[/size][/font][font=宋体][size=10.5pt]安装后[/size][/font][font=Arial][size=10.5pt],[/size][/font][font=宋体][size=10.5pt]需要设置[/size][/font][font=Arial][size=10.5pt]PATH[/size][/font][font=宋体][size=10.5pt]和[/size][/font][font=Arial][size=10.5pt]J***A_HOME[/size][/font][font=宋体][size=10.5pt]环境变量[/size][/font][font=Arial][size=10.5pt].[/size][/font][font=宋体][size=10.5pt]与[/size][/font][font=Arial][size=10.5pt]JDK1.1[/size][/font][font=宋体][size=10.5pt]不同的是[/size][/font][font=Arial][size=10.5pt]:[/size][/font][font=宋体][size=10.5pt]设置好[/size][/font][font=Arial][size=10.5pt]J***A_HOME[/size][/font][font=宋体][size=10.5pt]环境变量后[/size][/font][font=Arial][size=10.5pt],JVM[/size][/font][font=宋体][size=10.5pt]将自动搜索系统类库以及用户的当前路径[/size][/font][font=Arial][size=10.5pt].
Java 2[/size][/font][font=宋体][size=10.5pt]环境变量的设置如下例所示[/size][/font][font=Arial][size=10.5pt]:
Solaris[/size][/font][font=宋体][size=10.5pt]平台[/size][/font][font=Arial][size=10.5pt]: setenv J***A_HOME Java2[/size][/font][font=宋体][size=10.5pt]的安装路径[/size][/font][font=Arial][size=10.5pt]
setenv PATH $J***A_HOME/bin:${PATH}
Windows[/size][/font][font=宋体][size=10.5pt]平台[/size][/font][font=Arial][size=10.5pt]: set J***A_HOME=Java2[/size][/font][font=宋体][size=10.5pt]的安装路径[/size][/font][font=Arial][size=10.5pt]
set PATH=$J***A_HOMEbin;%PATH%
[/size][/font][font=宋体][size=10.5pt]问[/size][/font][font=Arial][size=10.5pt]: [/size][/font][font=宋体][size=10.5pt]哪些[/size][/font][font=Arial][size=10.5pt]Java[/size][/font][font=宋体][size=10.5pt]集成开发工具支持[/size][/font][font=Arial][size=10.5pt]Java 2?
[/size][/font][font=宋体][size=10.5pt]答[/size][/font][font=Arial][size=10.5pt]:
[/size][/font][font=宋体][size=10.5pt]目前流行的[/size][/font][font=Arial][size=10.5pt]Java[/size][/font][font=宋体][size=10.5pt]集成开发环境[/size][/font][font=Arial][size=10.5pt],[/size][/font][font=宋体][size=10.5pt]如[/size][/font][font=Arial][size=10.5pt]Inprise[/size][/font][font=宋体][size=10.5pt]的[/size][/font][font=Arial][size=10.5pt]JBuilder,Symantec[/size][/font][font=宋体][size=10.5pt]的[/size][/font][font=Arial][size=10.5pt]Visual Cafe, Sybase[/size][/font][font=宋体][size=10.5pt]的[/size][/font][font=Arial][size=10.5pt]PowerJ,[/size][/font][font=宋体][size=10.5pt]都支持[/size][/font][font=Arial][size=10.5pt]Java 2.
[/size][/font][font=宋体][size=10.5pt]问[/size][/font][font=Arial][size=10.5pt]: [/size][/font][font=宋体][size=10.5pt]如果在[/size][/font][font=Arial][size=10.5pt]Netscape[/size][/font][font=宋体][size=10.5pt]或[/size][/font][font=Arial][size=10.5pt]IE[/size][/font][font=宋体][size=10.5pt]浏览器中运行[/size][/font][font=Arial][size=10.5pt]Java applet[/size][/font][font=宋体][size=10.5pt]时出现了错误[/size][/font][font=Arial][size=10.5pt],[/size][/font][font=宋体][size=10.5pt]如何确定错误范围[/size][/font][font=Arial][size=10.5pt]?
[/size][/font][font=宋体][size=10.5pt]答[/size][/font][font=Arial][size=10.5pt]:
[/size][/font][font=宋体][size=10.5pt]当[/size][/font][font=Arial][size=10.5pt]java applet[/size][/font][font=宋体][size=10.5pt]在浏览器中运行时[/size][/font][font=Arial][size=10.5pt],[/size][/font][font=宋体][size=10.5pt]使用的是浏览器本身的缺省[/size][/font][font=Arial][size=10.5pt]JVM.[/size][/font][font=宋体][size=10.5pt]而不同浏览器对[/size][/font][font=Arial][size=10.5pt]JDK[/size][/font][font=宋体][size=10.5pt]的支持程度也不尽相同[/size][/font][font=Arial][size=10.5pt]. [/size][/font][font=宋体][size=10.5pt]因此[/size][/font][font=Arial][size=10.5pt],[/size][/font][font=宋体][size=10.5pt]在[/size][/font][font=Arial][size=10.5pt]Netscape[/size][/font][font=宋体][size=10.5pt]或[/size][/font][font=Arial][size=10.5pt]IE[/size][/font][font=宋体][size=10.5pt]浏览器中运行[/size][/font][font=Arial][size=10.5pt]Java applet[/size][/font][font=宋体][size=10.5pt]出现了错误[/size][/font][font=Arial][size=10.5pt],[/size][/font][font=宋体][size=10.5pt]建议使用[/size][/font][font=Arial][size=10.5pt]JDK[/size][/font][font=宋体][size=10.5pt]提供的工具[/size][/font][font=Arial][size=10.5pt]appletviewer[/size][/font][font=宋体][size=10.5pt]或[/size][/font][font=Arial][size=10.5pt]Sun[/size][/font][font=宋体][size=10.5pt]公司的[/size][/font][font=Arial][size=10.5pt]Hotjava[/size][/font][font=宋体][size=10.5pt]浏览器来测试该[/size][/font][font=Arial][size=10.5pt]applet,[/size][/font][font=宋体][size=10.5pt]以确定错误的产生是与浏览器相关[/size][/font][font=Arial][size=10.5pt].
[/size][/font][font=宋体][size=10.5pt]如果[/size][/font][font=Arial][size=10.5pt]applet[/size][/font][font=宋体][size=10.5pt]在[/size][/font][font=Arial][size=10.5pt]appletviewer[/size][/font][font=宋体][size=10.5pt]或[/size][/font][font=Arial][size=10.5pt]Hotjava[/size][/font][font=宋体][size=10.5pt]中运行一切正常[/size][/font][font=Arial][size=10.5pt],[/size][/font][font=宋体][size=10.5pt]则错误的产生是由于浏览[/size][/font]
[font=宋体][size=10.5pt]器不完全兼容[/size][/font][font=Arial][size=10.5pt]JDK[/size][/font][font=宋体][size=10.5pt]而引起的[/size][/font][font=Arial][size=10.5pt]. [/size][/font][font=宋体][size=10.5pt]此时[/size][/font][font=Arial][size=10.5pt],[/size][/font][font=宋体][size=10.5pt]解决方法可以是使用[/size][/font][font=Arial][size=10.5pt]Hotjava[/size][/font][font=宋体][size=10.5pt]浏览器或者安装[/size][/font][font=Arial][size=10.5pt] Sun[/size][/font][font=宋体][size=10.5pt]公司的[/size][/font][font=Arial][size=10.5pt]Java Plugin.
[/size][/font][font=宋体][size=10.5pt]如果[/size][/font][font=Arial][size=10.5pt]applet[/size][/font][font=宋体][size=10.5pt]在[/size][/font][font=Arial][size=10.5pt]Hotjava[/size][/font][font=宋体][size=10.5pt]浏览器或[/size][/font][font=Arial][size=10.5pt]appletviewer[/size][/font][font=宋体][size=10.5pt]中运行即发生错误[/size][/font][font=Arial][size=10.5pt],[/size][/font][font=宋体][size=10.5pt]则应当根据错误[/size][/font]
[font=宋体][size=10.5pt]提示检查[/size][/font][font=Arial][size=10.5pt]applet[/size][/font][font=宋体][size=10.5pt]程序[/size][/font][font=Arial][size=10.5pt]. [/size][/font]
[font=Arial][size=10.5pt][font=宋体][size=10.5pt]问[/size][/font][font=Arial][size=10.5pt]: [/size][/font][font=宋体][size=10.5pt]当用[/size][/font][font=Arial][size=10.5pt]JDBC[/size][/font][font=宋体][size=10.5pt]向数据库中插入数据或从数据库中提取数据时[/size][/font][font=Arial][size=10.5pt],[/size][/font][font=宋体][size=10.5pt]为何有时中文字符会显示为乱码[/size][/font][font=Arial][size=10.5pt]?
[/size][/font][font=宋体][size=10.5pt]答[/size][/font][font=Arial][size=10.5pt]:
[/size][/font][font=宋体][size=10.5pt]这个问题的实现通常与各个[/size][/font][font=Arial][size=10.5pt]JDBC driver[/size][/font][font=宋体][size=10.5pt]的实现有关[/size][/font][font=Arial][size=10.5pt]. [/size][/font][font=宋体][size=10.5pt]目前大多数[/size][/font][font=Arial][size=10.5pt]JDBC driver[/size][/font][font=宋体][size=10.5pt]采用本地编码格式来传输中文字符[/size][/font][font=Arial][size=10.5pt],[/size][/font][font=宋体][size=10.5pt]例如中文字符[/size][/font][font=Arial][size=10.5pt]"0x4175"[/size][/font][font=宋体][size=10.5pt]会被转成[/size][/font][font=Arial][size=10.5pt]"0x41"[/size][/font][font=宋体][size=10.5pt]和[/size][/font][font=Arial][size=10.5pt]"0x75"[/size][/font][font=宋体][size=10.5pt]进行传输[/size][/font][font=Arial][size=10.5pt]. [/size][/font][font=宋体][size=10.5pt]因此我们需要对[/size][/font][font=Arial][size=10.5pt]JDBC driver[/size][/font][font=宋体][size=10.5pt]返回的字符以及要发给[/size][/font][font=Arial][size=10.5pt]JDBC driver[/size][/font][font=宋体][size=10.5pt]的字符进行转换[/size][/font][font=Arial][size=10.5pt].
[/size][/font][font=宋体][size=10.5pt]当用[/size][/font][font=Arial][size=10.5pt]JDBC driver[/size][/font][font=宋体][size=10.5pt]向数据库中插入数据时[/size][/font][font=Arial][size=10.5pt],[/size][/font][font=宋体][size=10.5pt]需要先将[/size][/font][font=Arial][size=10.5pt]Unicode[/size][/font][font=宋体][size=10.5pt]转成[/size][/font][font=Arial][size=10.5pt]native code; [/size][/font][font=宋体][size=10.5pt]当[/size][/font][font=Arial][size=10.5pt] JDBC driver[/size][/font][font=宋体][size=10.5pt]从数据库中查询数据时[/size][/font][font=Arial][size=10.5pt],[/size][/font][font=宋体][size=10.5pt]则需要将[/size][/font][font=Arial][size=10.5pt]native code[/size][/font][font=宋体][size=10.5pt]转换成[/size][/font][font=Arial][size=10.5pt]Unicode. [/size][/font][font=宋体][size=10.5pt]下面给出了这两种转换的实现[/size][/font][font=Arial][size=10.5pt]:
String native2Unicode(String s) {
if (s == null || s.length() == 0) {
return null;
}
byte[] buffer = new byte[s.length()];
for (int i = 0; i s.length(); i++) { if (s.charAt(i)>= 0x100) {
c = s.charAt(i);
byte []buf = (""+c).getBytes();
buffer[j++] = (char)buf[0];
buffer[j++] = (char)buf[1];
}
else {
buffer[j++] = s.charAt(i);
}
}
return new String(buffer, 0, j);
}
[/size][/font][/size][/font]