問: 如何設置Java (JDK)的環境變量? 答: Java
安裝後
需要設置PATH和JAVA_HOME環境變量
與JDK
不同的是:設置好JAVA_HOME環境變量後
JVM將自動搜索系統類庫以及用戶的當前路徑
Java
環境變量的設置如下例所示:
Solaris平台: setenv JAVA_HOME Java
的安裝路徑
setenv PATH $JAVA_HOME/bin:${PATH}
Windows平台: set JAVA_HOME=Java
的安裝路徑
set PATH=$JAVA_HOMEbin;%PATH%
問: 哪些Java集成開發工具支持Java ? 答: 目前流行的Java集成開發環境
如Inprise的JBuilder
Symantec的Visual Cafe
Sybase的PowerJ
都支持Java
問: 如果在Netscape或IE浏覽器中運行Java applet時出現了錯誤如何確定錯誤范圍? 答: 當java applet在浏覽器中運行時
使用的是浏覽器本身的缺省JVM
而不同浏覽器對JDK的支持程度也不盡相同
因此
在Netscape或IE浏覽器中運行Java applet出現了錯誤
建議使用JDK提供的工具appletviewer或Sun公司的Hotjava浏覽器來測試該applet
以確定錯誤的產生是與浏覽器相關
如果applet在appletviewer或Hotjava中運行一切正常
則錯誤的產生是由於浏覽 器不完全兼容JDK而引起的
此時
解決方法可以是使用Hotjava浏覽器或者安裝 Sun公司的Java Plugin
如果applet在Hotjava浏覽器或appletviewer中運行即發生錯誤
則應當根據錯誤 提示檢查applet程序
問: 當用JDBC向數據庫中插入數據或從數據庫中提取數據時為何有時中文字符會顯示為亂碼? 答: 這個問題的實現通常與各個JDBC driver的實現有關
目前大多數JDBC driver采用本地編碼格式來傳輸中文字符
例如中文字符
x
會被轉成
x
和
x
進行傳輸
因此我們需要對JDBC driver返回的字符以及要發給JDBC driver的字符進行轉換
當用JDBC driver向數據庫中插入數據時
需要先將Unicode轉成native code; 當 JDBC driver從數據庫中查詢數據時
則需要將native code轉換成Unicode
下面給出了這兩種轉換的實現:
String native
Unicode(String s) {
if (s == null || s
length() ==
) {
return null;
}
byte[] buffer = new byte[s
length()];
for (int i =
; i s
length(); i++) { if (s
charAt(i)>=
x
) {
c = s
charAt(i);
byte []buf = (
+c)
getBytes();
buffer[j++] = (char)buf[
];
buffer[j++] = (char)buf[
];
}
else {
buffer[j++] = s
charAt(i);
}
}
return new String(buffer
j);
}
除使用以上兩個方法之外
有些JDBC driver如果對jdbc driver Manager設置了正確 的字符集屬性
以上
個方法就不需要了
問: 當用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
GB
);
ow
write(
這是測試
);
ow
flush();
ow
close();
}
問: 如何設置Java WebServer的CLASSPATH以包含用戶的class文件? 答:
有兩種方法可以設置Java WebServer的CLASSPATH環境變量
以使用戶編寫的Servlet能夠調用用戶的class文件
將用戶的class文件放到 JavaWebServer_Dir/classes目錄下
在Java WebServer 啟動時
classes目錄被自動加入到CLASSPATH環境變量中了
修改文件
將用戶class文件所在的路徑名加到CLASSPATH環境變量中
問: 為什麼在Windows平台上用Naminglookup來獲取遠程RMI對象時會很慢? 答:
機器的網絡設置不正確很可能會引起該問題的發生
RMI使用了Java網絡類
特別是
InetAddress類
它將查詢TCP/IP的主機名
包括IP地址到主機名的映射和主機名到IP地址的映射
在Windows平台
這種查詢功能 是由本地的Windows Socket庫來實現的
因此延時是發生在Windows庫中
而非RMI中
如果你的機器設置成使用DNS
問題通常是DNS服務器查不到主機名
你所發現的延時 是DNS查詢的延時
請嘗試將RMI通信中涉及到的所有主機名/IP地址加到本地文件 winntsystem
driversetchosts或windowshosts中
格式如下:
IP地址 主機名
如此設置應當可以明顯地減少查詢所花的時間
問: 編寫Java application時如何設置proxy的信息以便訪問外部網站? 答: 若在java application中訪問外部網站
首先應設置proxy信息
樣例代碼如下:
import java
util
properties;
Properties sys = System
getProperties();
sys
put(
proxySet
true
);
sys
put(
proxyHost
my
);
sys
put(
proxyPort
);
System
setProperties(sys);
u = new URL(website);
connect = (HttpURLConnection)u
openConnection();
問: Swing組件JList的列表數據修改了如何通知JList改變顯示? 答:
JList組件有一個單獨的顯示模式ListModel來表示JList的顯示數據
JList創建以後
JList數據元素的值及數據元素的數量可以動態地改變
JList在它的數據模式ListModel中觀察數據的改變
因此
一個ListModel 的正確實現應當在每次數據發生改變時
通知事件的監聽者
當使用構造函數JList(Object[])創建一個JList的實例時
系統將自動 創建一個DefaultListModel的實例來存儲JList的顯示數據
可以調用 DefaultListModel中定義的簡便方法來動態地修改JList的數據
如 removeElementAt(index)
addElement(Object)等
DefaultListModel 在修改數據的同時
將通知JList關於數據的改變
問: 在Java applet中如何實現一個模式對話框? 答:
在Java applet中實現模式對話框的關鍵就是在創建一個對話框的時候 要為該對話框指定一個正確的父窗口
因為Applet是Panel類的子類
不 可以作為對話框的父窗口
所以首先要獲得applet所在的窗口
作為模式 對話框的父窗口
樣例代碼如下:
Dialog d = new Dialog( getParentWindow(comp)
title);
// comp為applet上的任意一個組件
public void getParentWindow(Component compOnApplet
String title){
Container c = compOnApplet
getParent();
while (c != null) {
if (c instanceof Frame)
return (Frame) c;
c = c
getParent();
}
return null;
}
問: 在Java applet中如何顯示另外一個HTML頁面? 答: 通過java
applet
Applet
getAppletContext()方法可以獲得與該applet相關的AppletContext
AppletContext
showDocument(URL)方法就可以使applet所在的浏覽器顯示另外一個網頁
問: 用JDK實現的簽名applet可否在Netscape或IE中運行? 答: 用JDK實現的簽名applet
不可以在Netscape或IE中運行
但是可以在Hotjava浏覽器中運行
不同的浏覽器提供了不同的簽名applet機制
如Netscape提供了zigbert工具和 Capability API
而IE則需要使用CAB文件
但是
無論是Netscape工具產生的 簽名applet
還是用IE產生的簽名applet
都不可以在其它的浏覽器中運行
如果要使JDK產生的簽名applet能夠在Netscape或IE中運行
解決方法是在 Netscape或IE中安裝Java Plugin
則用JDK實現的簽名applet就可以在這兩種 浏覽器中運行
問: 用JNI技術可以從Java應用中調用C程序庫但是如何使該C程序庫可以調用另外的C程序庫? 答:
如果一個被Java調用的C程序庫C
仍需要調用另外一個C程序庫C
那麼在編譯C
的時候應當聯接程序庫C
步驟如下(Solaris平台):
編寫調用C庫的Java文件
並編譯
javac java文件名
產生C程序頭文件
javah
jni java文件名(不帶後綴
java)
編寫被Java調用的C程序C
c
以及被C
調用的C
c
並編譯
cc
G
Iinclude路徑名 C
c
o libC
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19472.html