ubuntu 12.04 JDK和JVM配置,浏览器执行Applet

(仅仅是记自己的行径,为以后再配置作参考。没有权威性。)
我走了弯路,不知道jdk里边会包含jre,所以首先装了jre,其实可以不用装jre直接装jdk的,jdk是jre的超集。
 
jre是java程序的运行环境(如带打开嵌有java程序的网页需要jre),如果自己不开发java程序的话,装jre就行了。
 
(一)装jre
1. 官网下载jre-7u21-linux-i586.rpm http://www.java.com/en/download/manual.jsp
2. mkdir /usr/java, 将rpm软件包拷贝到该目录下。
3. 安装程序包
    rpm -ivh jre-7u7-linux-i586.rpm
    要升级程序包,请键入:
   rpm -Uvh jre-7u7-linux-i586.rpm
4. 安装完成,可删除rpm包。
5. 配置环境变量,在/etc/profile文件末尾加上:
   export JAVA_HOME=/usr/java/jre1.7.0_21
   export JAVA_BIN=/usr/java/jre1.7.0_21/bin
   export PATH=$PATH:$JAVA_HOME/bin
   export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
   export JAVA_HOME JAVA_BIN PATH CLASSPATH
   我在~/.profile文件里也加入了上述内容。
6. 验证。终端执行java -version,打印出相关版本信息,则安装成功。
 
但是要在浏览器中显示带有Applet的网页,还需要两个步骤:
1. 进入firefox的plugin目录下,将JRE的的一个插件文件链接到mozilla的plugin目录下(在命令行下(root权限)
 
  cd /usr/lib/firefox/plugins
  ln -s /usr/java/jre1.7.0_21/plugin/i386/ns7/libjavaplugin_oji.so libjavaplugin_oji.so
chromium-browser浏览器同理。
2. 我在这样做之后,还是不能打开具有Applet的网页。还需要一个东西:IcedTea-Web Plugin。
打开ubuntu软件中心,搜索icedted-7-plugin,安装。装好了之后在火狐或者谷歌浏览器地址栏输入about:plugins,可以看见已经有IcedTea-Web Plugin这个插件了。(icedted-7-plugin会附带安装openjdk,安装在jdk所安装的目录下。我的是/usr/lib/jvm)
其他设置:
$ cd /usr/java/jre1.7.0_21/bin
$ ls
会看见有个ControlPanel
执行:
$ sudo ./ControlPanel
会弹出java控制面板,可在安全选项卡进行相关设置。
到这里打开具有Applet的网页,应该不会再显示“缺少必要的插件,请安装JVM”了。可以到官网提供的测试页面测试一下:http://java.com/zh_CN/download/testjava.jsp
 
(但是我自己写的Applet程序,可以用Appletviewer打开,嵌入到浏览器中却不能正常显示,说是“未初始化小应用程序”。这一点尚未解决。)
更新——已解决:
以chromium-browser浏览器为例:
在装了icedted-7-plugin这个之后,其实并不能解决问题,还需要一步
 ln -s /usr/lib/jvm/jdk1.7.0_21/jre/lib/i386/libnpjp2.so /usr/lib/chromium-browser/plugins
这时候在浏览器地址栏中输入
about:plugins
会看到多了一个Java(TM)Java plug-in for NPAPI-based browsers.在插件管理里即使将icedted-7-plugin禁用掉,仍然能够执行Applet。可见icedted-7-plugin并不能解决根本问题。
到现在为止,我的/usr/lib/chromium-browser/plugins目录下有

IcedTeaPlugin.so libjavaplugin_oji.so libnpjp2.so

这三个链接,它们的目录分别是:
/usr/lib/jvm/java-7-openjdk-i386/jre/lib/i386/IcedTeaPlugin.so
/usr/lib/jvm/jdk1.7.0_21/jre/plugin/i386/ns7/libjavaplugin_oji.so
 
/usr/lib/jvm/jdk1.7.0_21/jre/lib/i386/libnpjp2.so
 
firefox同理。但是firefox的目录有点多,我都没搞清楚,自己试一下吧,将上述的三个.so文件链接到以下三个目录(不是一个目录下链接一个,是每个目录下都有三个.so文件。到底起作用的是哪一个或两个我也懒得去管啦):
$ cd ~/.mozilla/plugins/
$ cd /usr/lib/mozilla/plugins/
$ cd /usr/lib/firefox/plugins
 
 
 
 
(二)安装jdk
如果装了jre,在/usr/java/jre1.7.0_21/bin目录下可以看见java可执行文件,所以可以用
java HelloWorld
命令执行已编译好的HelloWorld.class文件。但是将HelloWorld.java源程序文件编译成class文件,如下
javac HelloWorld.java
就需要安装jdk。jdk的bin目录下有java,javac,javadoc,appletviewer,jar等等。
我是按照这篇文章安装jdk的:
先去 Oracle下载Linux下的JDK压缩包,我下载的是jdk-7u4-linux-i586.tar.gz文件,下好后直接解压
 
Step1:
# 将解压好的jdk1.7.0_04文件夹用最高权限复制到/usr/lib/jvm目录里
sudo cp -r ~/jdk1.7.0_04/ /usr/lib/jvm/
 
Step2:
# 配置环境变量
sudo gedit ~/.profile
在末尾加上:
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_04
 
然后保存关闭,使用source更新下
$ source ~/.profile
 
使用env命令察看JAVA_HOME的值
$ env
如果JAVA_HOME=/usr/lib/jvm/jdk1.7.0_04,说明配置成功。
 
Step3:
# 将系统默认的jdk修改过来
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_04/bin/java 300 
 
输入sun jdk前的数字就好了
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_04/bin/javac 300 
 
$ sudo update-alternatives --config java 
$ sudo update-alternatives --config javac
 
Step4:
然后再输入java -version,看到如下信息,就说明改成sun的jdk了:
java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0_04-b20)
Java HotSpot(TM) Server VM (build 23.0-b21, mixed mode)
 
(三)demo
HelloWorld示例:
public class HelloWorld
{ 
    public static void main(String[] args) 
    {  
        System.out.println("Hello World!"); 
    }
}
保存为HelloWorld.java(文件名必须与类名一致)
编译:$ javac HelloWorld.java
运行:$ java HelloWorld 输出
Hello World!
则表示jdk安装成功。
 
Applet例子:
import java.applet.Applet;
import java.awt.Graphics;
public class Welcome extends Applet
{
    public void paint(Graphics g)
    {
        g.drawString("Welcome to Java!", 60, 25);
    }
}

 

保存为Welcome.java
编译:javac Welcome.java
产生Welcome.class。这个Welcome.class文件不能直接用
java Welcome
执行,因为Applet小应用程序里没有主函数main.
所以,该这么做:
 
新建一个html文件:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>载入applet</title>
<h1><center><font color="red">JavaScript与Java Applet之间的通信</font></center></h1>
<hr/>
</head>
<body bgcolor="orange">
<center>
<applet code="Welcome.class" name="testTxt" width="450" height="150">
      </applet>
    </center>
</body>
</html>
随便保存为一个名字,如1.html。
用浏览器打开1.html,或者在当前目录执行
appletviewer 1.html
即可打开Applet应用程序。
(appletviewer 1.html可以执行我的程序,但是在浏览器中仍然不显示。不是jvm的关系。
 
今天又看到一种方法,Applet还可以这么运行:
新建HelloWorld.java:
 
import java.awt.*;
import java.applet.*;
public class HelloWorld extends Applet
{
public void paint(Graphics g)
{
g.drawString("HelloWorld",30,30);
}
}
//<applet code=HelloWorld width=200 height=200>
//</applet>

注意最后两行不能去掉,包括“//”必须保留。

然后用不着编译啦,直接

appletviewer HelloWorld.java

就能弹出运行Applet的框,程序开始运行。

posted @ 2013-05-03 04:01  duanguyuan  阅读(962)  评论(2编辑  收藏  举报