2010年8月5日 星期四

[Tomcat] 啟動錯誤


2008/5/10 上午 04:51:08 org.apache.catalina.core.AprLifecycleListener init
資訊: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.6.0_05\bin;....


有人找到原因:

原來Tomcat從5.5版本後增加了APR技術(Apache Portable Runtime),這是一個用C語言寫成文件包,目的在於提高Tomcat的服務性能,從而使得Tomcat將不僅僅擔任一個容器的功能,而是要成為一個一般的web服務器(general purpose webserver)。

可以知道的是,原來預設的版本都沒有附加那個檔案!
因此,請各位到Tomcat網站上去下載:http://tomcat.apache.org/download-native.cgi
進去後找到 You may download them from HERE 連結,
在裡面找一個版本編號是最新的,進去後去下載一個叫 tcnative-1.dll 的檔案。
下載下來的tcnative-1.dll 的檔案,如果各位有設定JAVA_HOME的環境變數,
就直接把此檔案放進去 %JAVA_HOME%\bin 的目錄底下即可!

重新啟動Tomcat

2008/5/10 上午 04:42:00 org.apache.catalina.core.AprLifecycleListener init
資訊: Loaded Apache Tomcat Native library 1.1.12.

我使用的版本為5.5.30

參考來源:http://www.javaworld.com.tw/jute/post/view?bid=9&id=227419&sty=1&tpg=1&age=0

2010年8月3日 星期二

[Java] 讀取與更改Properties文件

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
/**
* 讀取與更改Properties文件
*/
public class PropertiesU {
private Properties propertie;
private FileInputStream inputFile;
private FileOutputStream outputFile;
/**
* 初始化PropertiesUtil類
*/
public PropertiesU(){
propertie = new Properties();
}
/** *//**
* 初始化PropertiesUtil類
* @param filePath 要讀取的配置文件的路徑+名稱
*/
public PropertiesU(String filePath){
propertie = new Properties();
try {
inputFile = new FileInputStream(filePath);
propertie.load(inputFile);
inputFile.close();
}catch (FileNotFoundException ex) {
System.out.println("the properties file doesn't exist at the path:"+filePath);
ex.printStackTrace();
}catch (IOException ex) {
System.out.println("fail to load the properties file");
ex.printStackTrace();
}
}//end ReadConfigInfo()
/**
* 得到key的值
* @param key 取得其值的key
* @return key的值
*/
public String getValue(String key){
if(propertie.containsKey(key)){
String value = propertie.getProperty(key);
return value;
}else {
return "";
}
}
/**
* 重載函數,得到key的值
* @param fileName properties文件的路徑+文件名
* @param key 取得其值的key
* @return key的值
*/
public String getValue(String fileName, String key){
try {
String value = "";
inputFile = new FileInputStream(fileName);
propertie.load(inputFile);
inputFile.close();
if(propertie.containsKey(key)){
value = propertie.getProperty(key);
return value;
}else {
return value;
}
}catch (FileNotFoundException e) {
e.printStackTrace();
return "";
}catch (IOException e) {
e.printStackTrace();
return "";
}catch (Exception ex) {
ex.printStackTrace();
return "";
}
}//end getValue()
/**
* 清除properties文件中所有的key和value
*/
public void clear(){
propertie.clear();
}
/**
* 改變或新加一個key的值,當key存在於properties文件中時該key的值被value所代替,
* 當key不存在時,該key的值是value
* @param key 要存入的key
* @param value 要存入的value
*/
public void setValue(String key, String value){
propertie.setProperty(key, value);
}
/**
* 將更改後的文件數據存入指定的文件中,該文件可以事先不存在。
* @param fileName 文件路徑+文件名稱
* @param description 對該文件的描述
*/
public void saveFile(String fileName, String description){
try {
outputFile = new FileOutputStream(fileName);
propertie.store(outputFile, description);
outputFile.close();
}catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException ioe){
ioe.printStackTrace();
}
}
public static void main(String[] args) throws Exception{
PropertiesU rc = new PropertiesU("e:\\test.properties");
rc.setValue("mulder", "tom");
String hwj = rc.getValue("mulder");
System.out.println("hwj's value:"+hwj);
rc.setValue("jason", "jennifer");
rc.saveFile("e:\\test.properties", "新增key-value");
}
}
view raw gistfile1.java hosted with ❤ by GitHub