Java常见问题集锦25问

文章作者 100test 发表时间 2007:03:14 16:45:26
来源 100Test.Com百考试题网


1、问: 如何设置java 2(jdk1.2)的环境变量?

: java 2安装后,需要设置pathjava_home环境变量.jdk1.1不同的是:设置好java_home环境变量后,jvm将自动搜索系统类库以及用户的当前路径.

java 2环境变量的设置如下例所示:

solaris平台: setenv java_home java2的安装路径

setenv path $java_home/bin:${path}

windows平台: set java_home=java2的安装路径

set path=$java_homebin.%path%

2、问: 哪些java集成开发工具支持java 2?

: 目前流行的java集成开发环境,inprisejbuilder,symantecvisual cafe, sybasepowerj,都支持java 2.

3、问: 如果在netscapeie浏览器中运行java applet时出现了错误,如何确定错误范围?

: java applet在浏览器中运行时,使用的是浏览器本身的缺省jvm.而不同浏览器对jdk的支持程度也不尽相同. 因此,netscapeie浏览器中运行java applet出现了错误,建议使用jdk提供的工具appletviewersun公司的hotjava浏览器来测试该applet,以确定错误的产生是与浏览器相关.

如果appletappletviewerhotjava中运行一切正常,则错误的产生是由于浏览 器不完全兼容jdk而引起的. 此时,解决方法可以是使用hotjava浏览器或者安装 sun公司的java plugin.

如果applethotjava浏览器或appletviewer中运行即发生错误,则应当根据错误 提示检查applet程序.

4、问: 当用jdbc向数据库中插入数据或从数据库中提取数据时,为何有时中文字符会显示为乱码?

: 这个问题的实现通常与各个jdbc driver的实现有关. 目前大多数jdbc driver采用本地编码格式来传输中文字符,例如中文字符0x4175会被转成0x410x75进行传输. 因此我们需要对jdbc driver返回的字符以及要发给jdbc driver的字符进行转换.

当用jdbc driver向数据库中插入数据时,需要先将unicode转成native code. jdbc driver从数据库中查询数据时,则需要将native code转换成unicode. 下面给出了这两种转换的实现:

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).

}

除使用以上两个方法之外,有些jdbc driver如果对jdbc driver manager设置了正确 的字符集属性,以上2个方法就不需要了.

5、问:

当用servlet来处理http请求并产生返回的html页面时,如何使html页面中的中文字符能够正常显示?

:

javax.servlet.http.httpresponse类用于产生返回页面.通过httpresponse定义的方法getoutputstream()可以获得servletoutputstream的实例,这样用户就可以利用servletoutputstream.write方法向输出流中写入返回页面的内容. 但是servletoutputstream使用的是缺省的编码方式,如果要使返回页面中的中文字 符能够正常显示,最好显示地指定所用的字符编码方式. 通常需要构造一个 outputstreamwriter , 例程如下:

public void doget (httpservletrequest req, httpservletresponse res)

throws servletexception, ioexception

{

res.setcontenttype(text/html).

servletoutputstream out = res.getoutputstream().

outputstreamwriter ow = new outputstreamwriter(out,gb2312).

ow.write(这是测试).

ow.flush().

ow.close().

}

6、问:

如何设置java webserverclasspath,以包含用户的class文件?

:

有两种方法可以设置java webserverclasspath环境变量,以使用户编写的servlet能够调用用户的class文件.

将用户的class文件放到 javawebserver_dir/classes目录下,java webserver 启动时,classes目录被自动加入到classpath环境变量中了.

修改httpd.nojre文件,将用户class文件所在的路径名加到classpath环境变量中.

7、问:

为什么在windows平台上用naming.lookup来获取远程rmi对象时会很慢?

:

机器的网络设置不正确很可能会引起该问题的发生.

rmi使用了java网络类,特别是java.net.inetaddress,它将查询tcp/ip的主机名, 包括ip地址到主机名的映射和主机名到ip地址的映射.windows平台,这种查询功能 是由本地的windows socket库来实现的. 因此延时是发生在windows库中,而非rmi.

如果你的机器设置成使用dns,问题通常是dns服务器查不到主机名,你所发现的延时 dns查询的延时. 请尝试将rmi通信中涉及到的所有主机名/ip地址加到本地文件 winntsystem32driversetchostswindowshosts. 格式如下:

ip地址 主机名

如此设置应当可以明显地减少查询所花的时间.

8、问: 编写java application,如何设置proxy的信息,以便访问外部网站?

: 若在java application中访问外部网站,首先应设置proxy信息,样例代码如下:

import java.util.properties.

.....

properties sys = system.getproperties().

sys.put(proxyset,true).

sys.put(proxyhost,myhttp.proxyserver.com).

sys.put(proxyport,80).

system.setproperties(sys).

u = new url(website).

connect = (httpurlconnection)u.openconnection().

.....



相关文章


Java常见问题集锦25问
Java:不再只能用于服务器
JavaSwing中的键盘事件处理
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛