哪位大侠解释一下jre,java plug-in以及jvm之间的关系

xiha2001 2002-04-26 10:30:30
我写的applet为什么就我自己的机子上能看,别的机子都不能看,
是需要jre还是java plug-in呢?
(我记得按thinking in java上的说法,用到java1.2以上的东西才需要java plug-in的呀,可是我实际并未用到java1.2以上的东西呀)
...全文
126 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
youyou215253237 2010-06-11
  • 打赏
  • 举报
回复
哈哈,茅塞顿开!!!!!!! 佩服佩服,我还把plug in 当成是jre呢!
javaing 2002-05-17
  • 打赏
  • 举报
回复
to xiha2001:

任何运行java程序的机器都需要有相应平台的jre(java runtime enviroment)的支持,因此首先你要确信你自己的机器和你测试的另外一台机器上都安装了提供了你的java程序中import进来的所有的class(在\JRE_HOME\lib\rt\下)的jre。
开发applet推荐安装1.3版本以上的JRE。

然后,在运行applet的浏览器中打开java console(缺省ie查看中没有此项,但是你可以更改设置),查看控制台报错,分析为何两台机器运行结果不同(如果机器上已经安装plugin了,就应该打开plugin的java console查看)。估计多半又是ClassNotFound的错误。如果真是找不到类,那应该检查一下这两台机器的JRE安装版本、PATH和CLASSPATH设置是否相同,若环境完全一样则不应该出现你所述错误。

你包含applet的HTML文件用sun提供的HTMLConverter转换了吗?贴出你的那段HTML标记看看阿。

jre是相对于平台而言的,java_plugin是相对于浏览器而言的。
如果jre1.3安装成功,应该能够在windows的控制面板中看到java plugin1.3的图标,并且用浏览器打开带有applet的html页时,浏览器会自动激活plugin来执行她,同时屏幕右下角会出现plugin的图标。
newman0708 2002-05-17
  • 打赏
  • 举报
回复
我也存在这个问题,
关注。
xiha2001 2002-04-26
  • 打赏
  • 举报
回复
按照horseliu和dylanwolf前面的说法,用到JAVA1.1.4以上的是需要java plug-in,但按照dylanwolf后面的说法,又是要下载jre,那到底有没有单独的java plug-in提供下载呢?要装java plug-in就必须装jre吗?
(jre不是java plug-in吧,大家都是说jre包括java plug-in呀)。
xiha2001 2002-04-26
  • 打赏
  • 举报
回复
但是我实际上没有用到swing呀,
新的事件处理和内部类倒是用了。
那应该是1.1的吧。
我的源代码如下:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class lianxian2 extends Applet {
int[] answer;
boolean[] pressed;
int width;

public void init() {
int rownum=Integer.parseInt(getParameter("rownum"));
int i;

width=(int)getSize().width;
answer=new int[rownum];
pressed=new boolean[rownum];
for(i=0;i<rownum;i++)
{
answer[i]=-1;
pressed[i]=false;
}
addMouseListener(new ApMouse());
addMouseMotionListener(new ApMotionMouse());
}
public void paint(Graphics g){
int i;
for(i=0;i<answer.length;i++){
g.drawString(new Character((char)('A'+i)).toString(),0,23+i*40);
g.drawString(getParameter("col2_"+i),220,23+i*40);
}
for(i=0;i<answer.length;i++){
if(answer[i]!=-1){
g.drawLine(10,20+40*i,220,20+40*answer[i]);
}
}

}
class ApMotionMouse extends MouseMotionAdapter{
public void mouseMoved(MouseEvent e){
int x=e.getX();
int y=e.getY();
if((x>=0&&x<=20)&&((y>=10&&y<=30)||(y>=50&&y<=70)||(y>=90&&y<=110)||(y>=130&&y<=150)||(y>=170&&y<=190)||(y>=210&&y<=230))){
setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
}
else if((x>=210&&x<=width)&&((y>=10&&y<=30)||(y>=50&&y<=70)||(y>=90&&y<=110)||(y>=130&&y<=150)||(y>=170&&y<=190)||(y>=210&&y<=230))){
setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
}
else
setCursor(Cursor.getDefaultCursor());
}
public void mouseDragged(MouseEvent e){
int x=e.getX();
int y=e.getY();
if((x>=0&&x<=20)&&((y>=10&&y<=30)||(y>=50&&y<=70)||(y>=90&&y<=110)||(y>=130&&y<=150)||(y>=170&&y<=190)||(y>=210&&y<=230))){
setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
}
else if((x>=210&&x<=width)&&((y>=10&&y<=30)||(y>=50&&y<=70)||(y>=90&&y<=110)||(y>=130&&y<=150)||(y>=170&&y<=190)||(y>=210&&y<=230))){
setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
}
else
setCursor(Cursor.getDefaultCursor());
}
}
class ApMouse extends MouseAdapter{
public void mousePressed(MouseEvent e){
int x=e.getX();
int y=e.getY();
int i;
if(x>=0&&x<=20){
for(i=0;i<answer.length;i++){
if(y>=10+i*40&&y<=30+i*40){
pressed[i]=true;
break;
}
else
pressed[i]=false;
}
}
else{
for(i=0;i<answer.length;i++)
pressed[i]=false;
}
}
public void mouseReleased(MouseEvent e){
int x=e.getX();
int y=e.getY();
int i,j;
Graphics g=getGraphics();
if(x>=210&&x<=width){
for(i=0;i<answer.length;i++){
if(y>=10+i*40&&y<=30+i*40){
for(j=0;j<answer.length;j++){
if(pressed[j]==true)
break;
}
if(j<answer.length){
if(answer[j]!=-1){
g.setXORMode(getBackground());
g.drawLine(10,20+40*j,220,20+40*answer[j]);
}
g.drawLine(10,20+40*j,220,20+40*i);
answer[j]=i;
break;
}
}
}
}
for(i=0;i<answer.length;i++)
pressed[i]=false;
g.dispose();
}
}
}
马行空牛耕田 2002-04-26
  • 打赏
  • 举报
回复
哈哈,茅塞顿开!!!!!!! 佩服佩服,我还把plug in 当成是jre呢!
dylanwolf 2002-04-26
  • 打赏
  • 举报
回复
问:如果要开发带有Swing或其他JAVA新技术的applet,要安装什么软件?
答:Sun的最新的J2SDK软件,目前最新版本为1.3.1。

问:客户端浏览带Swing或其他JAVA新技术的applet,要安装什么软件?
答: 不需特别注意什么,如果第一次浏览带Swing或其他JAVA新技术的applet时,会被引导至某站点(缺省为Sun的java站点)自行下载安装带有数字签名的JRE软件。如果已经安装过,则 plug-in会自行起作用。
注意:JRE分美国版及国际版,J2sdk则只有一种,在选择JRE时中文用户应选择国际版。

问:如何将引导下载JRE的站点改为自己设定的http站点?
答:在要发布的html页中(html converter转化)有“codebase="http://java.sun.com/products/plugin/1.3/jinstall-13-win32.cab#Version=1,3,0,0"” 改为自己的即可。比如:“codebase="http://202.119.28.215/JavaRelated/Software/j2re1_3_0-win-i.exe#Version=1,3,0,0"”。 “pluginspage="http://java.sun.com/products/plugin/1.3/plugin-install.html"”也类似,只不过这是针对Netscape Navigator的。
参见http://java.sun.com/products/plugin/1.3/docs/intranet.html。

dylanwolf 2002-04-26
  • 打赏
  • 举报
回复
):JDK和J2SDk:J2SDk包含了Java Development kit(JDK)、Java Runtime Environment(JRE)和Java Plug-in。原先sun的JAVA软件开发工具包是JDK,现在就称为J2SDk了。JRE和plug-in:J2RE包含了java plug-in。

sun的java网站上就单独提供J2SDK和JRE各种版本的下载,J2SDk是提供给开发JAVA程序所用,应用程序用户是不需要开发工具的。而JRE顾名思义是JAVA程序要运行所需要的环境,所谓跨平台就是要各种平台都有一个中间代理,那就是JRE。一般采用JAVA技术开发出的软件都得带这个,所以sun就单独提供了JRE安装文件,以供JAVA应用程序发布时所用。

dylanwolf 2002-04-26
  • 打赏
  • 举报
回复
众所周知,JAVA技术是开放的,Sun制定规范,各公司可以推出自己的JAVA实现,当然都得遵守Sun的规范。JAVA技术发展的开始阶段,MS和Sun保持了很好的合作关系,在IE里面采用MS的JAVA VM(虚拟机)支持Java applet。但好景不长,双方分手了,最新的IE支持的JAVA版本是1.1.4。另外,Netscape Navigator也不支持最新的JAVA版本。如何让applet能用到最新的Java类库呢?这就是Sun推出了它的所谓plug-in技术的原因所在。

言归正传,JAVA2技术的发展日新月异,IE只支持MS的JAVA1.1.4,applet如何才能利用到那些新的核心类库呢?唯一的办法,绕开IE的appet机制(<applet.........</applet>),使用 plug-in,利用IE浏览器必须支持的扩展技术扩展IE功能。所谓的扩展技术也就是MS的 COM/ActiveX技术,在网页中这就是<OBJECT>标签的目的所在了。顺便说一下,在Netscape Navigator中plug-in是利用浏览器的插件构架来达到目的的(<EMBED>目的所在)。plug-in的作用就在于用Sun的JRE来替代掉浏览器所默认的JRE。

明白了以上内容,我们就可以了解为什么带Swing的applet网页不能用一般的HTML标记语言 <applet>来写了,为什么浏览带Swing技术的Applet要有plug-in才行了。

对applet开发者而言最简单方便的方法就是:

用平时一般的<applet........></applet>标签写好待发布网页。
用Sun提供的html converter将待发布网页自动转化成plug-in所能起作用的带有<OBJECT>和<EMBED>标签的网页。此时即可发布了。
如需自己写,参见http://java.sun.com/products/plugin/1.3/docs/。
horseliu 2002-04-26
  • 打赏
  • 举报
回复
需要Java plug-in,只要你的applet中用到了Swing都要Java plug-in 才能运行,除非你的applet使用awt做的。
xiha2001 2002-04-26
  • 打赏
  • 举报
回复
怎么就没大侠回答我的问题呢?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧