ice編譯java
PHP與JAVA融合的開發環境
一.系統環境
1.初始安裝
防火牆開放介面:21,22,80,2401,8009,10000,eth0
Redhat linux 9.0
Development Tools
Network Servers
VSFtp
CVS-1.11.2-10
Mysql 3.23.54
2.包安裝
JDK 1.5
下載地址:http://www.netshine.com.cn/linux/j2sdk-1_4_2_04-linux-i586.rpm
Tomcat 5.0.19
下載地址:http://www.netshine.com.cn/linux/jakarta-tomcat-5.0.19.tar.gz
3.腳本安裝
Webmin 1.110
下載地址:http://www.netshine.com.cn/linux/webmin-1.110.tar.gz
ZendOptimizer 2.5.1
下載地址:http://www.netshine.com.cn/linux/ZendOptimizer-2.5.1-Linux_glibc21-i386.tar.gz
4.手工編譯
Apache 2.0.49
下載地址:http://www.netshine.com.cn/linux/httpd-2.0.49.tar.gz
PHP 4.3.5
下載地址:http://www.netshine.com.cn/linux/php-4.3.5.tar.gz
JK 2-2.0.4
下載地址:http://www.netshine.com.cn/linux/jakarta-tomcat-connectors-jk2-src-current.tar.gz
5.客戶機環境
Windows XP Professional
Absolute Telnet 3.0
Zend Encoder
Macromedia Dreamweaver MX 2004
Borland JBuilder 9 Enterprise
WinCVS 1.3
下載地址:http://www.netshine.com.cn/linux/WinCvs13b17.zip
二.系統安裝
啟動Linux安裝光碟,安裝基本系統:FTP、開發工具和MySQL3.23.54。如果你是手工編譯安裝MySQL,要記得以後在編譯PHP等程序時要指明MySQL的具體路徑,否則會因找不到路徑而導致編譯出錯。
三.安裝webmin1.110
用Webmin來配置系統,傻瓜化,可以節省不少力氣,所以一般我都先安裝它。安裝過程很簡單,執行setup.sh腳本後照提示一步一步來就可以了。
# cd webmin*
# ./setup.sh
四.安裝JDK1.5
1.編輯如下三個文件,沒有指明全路徑的放在你自己的home目錄就可以。
/etc/profile
JAVA_HOME=/usr/java/j2sdk1.4.2_04
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
CVSROOT=/usr/local/cvsroot
PATH=.:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export JAVA_HOME CLASSPATH CVSROOT PATH
/etc/ld.so.conf
/usr/java/j2sdk1.4.2_04/jre/lib/i386
/usr/java/j2sdk1.4.2_04/jre/lib/i386/server
HelloWorld.java
class HelloWorld
{
public static void main(String[] args)
{
//本文件測試Java環境是否安裝成功。
System.out.println("Hello World!");
}
}
2.執行以下命令:
# rpm -ivh j2sdk*.rpm //安裝JDK包。
# source /etc/profile //重載profile環境。
# ldconfig //創建動態鏈接庫緩存文件。
# javac -d . HelloWorld.java //編譯測試文件。
# java HelloWorld //運行程序測試安裝是否成功。
五.安裝Apache
# tar xvzf httpd* //解壓源碼包。
# cd httpd* //進入安裝目錄。
# ./configure --prefix=/usr/local/apache --enable-so --enable-mods-shared=most --enable-rewrite
# make;make install //編譯並安裝。
說明:
--enable-so選項:讓Apache可以支持DSO模式,注意,我們在這里採用的是Apache2.0的語法。如果你的Apache是1.3版本,應改為--enable-mole=so。
--enable-mods-shared=most選項:告訴編譯器將所有標准模塊都編譯為DSO模塊。你要是用的是Apache1.3,改為--enable-shared=max就可以。
--enable-rewrite選項:支持地址重寫功能,使用1.3版本的朋友請將它改為--enable-mole=rewrite。
六.編譯安裝PHP
1.執行命令
#tar xvzf php* //解壓源碼包
#cd php* //進入PHP安裝命令
#./configure --prefix=/usr/local/php --with-mysql --with-apxs2=/usr/local
/apache/bin/apxs --with-java=/usr/java/j2sdk1.4.2_04
#make;make install //編譯並安裝
#cp php.ini-dist /usr/local/php/lib/php.ini //復制php配置文件
#cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429 //extensions目錄
#ln -s java.so libphp_java.so //建立連接,忘記了會出錯哦
#cd Zend* //進入ZendOptimizer目錄
#./install //安裝PHP加速器
說明:
--with-apxs2=/usr/local/apache/bin/apxs是Apache2的語法,1.3版本的用戶請使用--with-apxs=/usr/local/apache/bin/apxs。
2.編輯下面三個文件
/usr/local/apache/conf/httpd.conf
LoadMole php4_mole moles/libphp4.so
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
AddDefaultCharset gb2312
/usr/local/apache/htdocs/test.php
<?php
//本程序測試PHP的JAVA環境是否可用,
代碼是從http://www.php.net/manual/en/ref.java.php摘錄下來的。
// get instance of Java class java.lang.System in PHP
$system = new Java('java.lang.System');
// demonstrate property access
echo 'Java version=' . $system->getProperty('java.version') . '<br />';
echo 'Java vendor=' . $system->getProperty('java.vendor') . '<br />';
echo 'OS=' . $system->getProperty('os.name') . ' ' .
$system->getProperty('os.version') . ' on ' .
$system->getProperty('os.arch') . ' <br />';
// java.util.Date example
$formatter = new Java('java.text.SimpleDateFormat',
"EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");
echo $formatter->format(new Java('java.util.Date'));
?>
/usr/local/php/lib/php.ini
register_globals=On
[Java]
java.class.path=/usr/local/php/lib/php/php_java.jar:/home/jim/myclass
java.home=/usr/java/j2sdk1.4.2_04
java.library=/usr/java/j2sdk1.4.2_04/jre/lib/i386/libjava.so
java.library.path=/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429
extension_dir=/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429
extension=libphp_java.so
注意:
(1).如果你剛剛從以前老版本的PHP轉換到新版本,可能會發現你的PHP程序很多都不能用了。別緊張!把register_globals打開就一切正常啦!這是因為老版本的PHP,它的register_globals默認是開著的,而新版本,卻把它關了的緣故。
(2)./home/jim/myclass是我存放JAVA組件的路徑,你可以根據實際情況修改,但是為了安全起見,可不要放在web目錄下哦。
2. Java:ICE協議應用是否廣泛,有沒有其他更好地選擇呢
常見的協議有這些。xml,json,php serialize,hessian,thrift, protobuf, ice,avro,messagepack都有很好的適用性。你可以根據需要選擇
3. eplice編寫java時怎麼調用常用的語句,減少手動輸入
JAVA輸入語句會用到Scanner類
Scanner scanner = new Scanner(System.in); //聲明Scanner對象
System.out.println("請輸入字元串"); //提示用戶輸入字元串
String result = scanner.next(); //定義一個result接受輸入的語句
System.out.println(result); //列印接受到的語句。
//另外scannner重載了很種方法 比如接受下一個整數,下一個字元等等
4. 用ICE實現客戶端調用伺服器上的方法(java),客戶端上調用部分顯示方法未定義,這段調用部分應該怎麼寫
ICE 要在客戶端服務端要有同樣生成的bean代碼,
在服務端啟動一個adapter
然後把你生成的代碼中的***I 點加到adapter中.
客戶端通過代理去調用.. 一兩句說不明白, 可以參考一下ICE demo中的 demoj.hello
5. 求高手指點:Ice 客服端代碼出現錯誤,程序如下:(在eclipse環境下運行)
編譯出問題了,缺少必要的頭文件,ICE_HOME是你的Ice安裝目錄,一般是/opt/ice,根據你版本來變化吧
c++ -I. -I$ICE_HOME/include -c Printer.cpp Server.cpp
6. 用ice實現java和c++的通信,代理類型返回為空是什麼原因
有區別, ICE 在基本上的相同的,但很多都是基於slice上的。 換句話來講只能是在slice上通用。
實際ICE是根據slice生成不同的原生語言(java,c++,php,c#)等,所以在語言上是等同於使用原生語言開發。 在數據上幾乎是一樣的,不過在顯示中文的時需要注意字元集問題。
返回代理類型為空一般都是,ICE的配置屬性是於相符, 代理是不是找不到。
7. 安裝了ice環境,明明有ice.jar,編譯時總是提示找不到ice軟體包是怎麼回事
是不是放在某個文件夾裡面,找不到呢。
8. 軟體包com.ice.jni.registry不存在(java編程)
不是好像不行,是肯定不行。。你去網上找下這個包。
http://hi..com/lidifeng/blog/item/32d39813561935826438db49.html
這里好像有個這個軟體包的下載地址,試試看
9. 一段基於C++語言的ICE主方法,不知誰能幫我翻譯為java的。初學ICE,文檔太少了。急求!!!
public class Demo extends Ice.Application
{
public int run (String[] args)
{
Ice.StringSeqHolder argsSH = new Ice.StringSeqHolder (args);
Ice.Properties properties = Ice.Util.createProperties (argsSH);
properties.setProperty ("Ice.Warn.Connections", "0");
properties.setProperty ("Ice.Trace.Protocol", "0");
Ice.InitializationData initData = new Ice.InitializationData();
initData.properties = properties;
Ice.Communicator ic = Ice.Util.initialize (initData);
// TODO Here ...
return 0;
}
public static void main (String[] args)
{
Demo app = new Demo();
int status = app.main ("Demo", args);
System.exit (status);
}
}
10. 基本的ice(java開發)的例子.編譯能通過,執行到Ice.Util時出現classnotfound異常.請問如何解決.謝謝!
public class FilenameDemo
{
public static void main(String[] args) {
Filename myHomePage = new Filename("/home/men/index.html", '/', '.');
System.out.println("Extension="+myHomePage.extension());
System.out.println("Filename="+myHomePage.filename());
System.out.println("Path="+myHomePage.path());
}
}
class Filename
{
private String fullPath;
private char pathSeparator, extensionSeparator;
public Filename(String str, char sep, char ext){
fullPath=str;
pathSeparator=sep;
extensionSeparator=ext;
}
public String extension() {
int dot =fullPath.lastIndexOf(extensionSeparator);
return fullPath.substring(dot+1);
}
public String filename() {
int dot=fullPath.lastIndexOf(extensionSeparator);
int sep=fullPath.lastIndexOf(pathSeparator);
return fullPath.substring(sep+1,dot);
}
public String path() {
int sep=fullPath.lastIndexOf(pathSeparator);
return fullPath.substring(0,sep+1);
}
}
這是修改之後的代碼,可以用。
如果你是在DOS命令下運行這段代碼,你應該把Filename類寫在另一個文件里。不明白的話,hi我吧。
如果對您有幫助,請記得採納為滿意答案,謝謝!祝您生活愉快!
vaela