簡體   English   中英

Javascript_Java_Interaction小程序“代碼庫”問題

[英]Javascript_Java_Interaction applet “Codebase” problem

我今天在看到有關Javascript_Java_Interaction的文章:

 http://www.rgagnon.com/javadetails/java-0184.html
 [ You can try the working version on that site ]
 So I tried it on my PC, after some simple format change the files look like this :

================================================== ==========================================

[C:/Dir_Fit/Javascript_Java_Interaction.html]

    <FRAMESET ROWS="100%,*">
      <FRAME NAME="mainFrame" SRC="Javascript_Java_Interaction_Visible_Page.html" border=0>
      <FRAME NAME="scriptFrame" SRC="Javascript_Java_Interaction_Invisible_Page.html" border=0>
    </FRAMESET>
--------------------------------------------------------------------------------------------

[C:/Dir_Fit/Javascript_Java_Interaction_Invisible_Page.html]

<HTML>
  <HEAD>
    <SCRIPT>
      function replace(s,t,u)
      {
        i=s.indexOf(t);
        r="";
        if (i==-1) return s;
        r+=s.substring(0,i)+u;
        if (i+t.length<s.length) r+=replace(s.substring(i+t.length,s.length),t,u);
        return r;
      }

      function getAndSendMessage()
      {
        theMessage=document.location.search.substring(1,255)
        if (theMessage.length>0)
        {
          // replace all '+" by space
          theMessage=replace(theMessage,'+',' ')
          window.parent.mainFrame.showMessage(unescape(theMessage))
        }
      }
    </SCRIPT>
  </HEAD>
  <BODY onLoad="getAndSendMessage();"></BODY>
</HTML>
-----------------------------------------------------------------------------------------
[C:/Dir_Fit/Javascript_Java_Interaction_Visible_Page.html]

<HTML>
  <HEAD><SCRIPT>function showMessage(s) { alert(s) }</SCRIPT></HEAD>
  <BODY>
    <H1>Simple Java - Javascript interaction</H1><P>
    <APPLET CODEBASE="file://C:/Dir_Fit/build/classes/" CODE="Javascript_Java_Interaction_Demo.class" WIDTH=150 HEIGHT=150></APPLET>
  </BODY>
</HTML>
-----------------------------------------------------------------------------------------
Source : [C:/Dir_Fit/src/Javascript_Java_Interaction_Demo.java]
class  : [C:/Dir_Fit/build/classes/Javascript_Java_Interaction_Demo.class]

import java.applet.Applet;
import java.awt.*;

public class Javascript_Java_Interaction_Demo extends Applet
{
  TextField aMessage;
  Button sendButton;

  public void init()
  {
    aMessage=new TextField(20);
    add(aMessage);
    sendButton=new Button("Send to Javascript");
    add(sendButton);
  }

  public boolean action(Event e,Object o)
  {
    if (e.target.equals(sendButton))
    {
      try { getAppletContext().showDocument(new java.net.URL(getCodeBase(),"Javascript_Java_Interaction_Invisible_Page.html?"+java.net.URLEncoder.encode(aMessage.getText())),"scriptFrame"); }
      catch (Exception ex) { ex.printStackTrace(); }
    }
    return true;
  }
}

================================================== ========================================

它在頁面[Javascript_Java_Interaction.html]上顯示了applet,但是如果我輸入一些文本並單擊按鈕,則什么也沒有發生,問題出在以下行:

<APPLET CODEBASE="file://C:/Dir_Fit/build/classes/" CODE="Javascript_Java_Interaction_Demo.class" WIDTH=150 HEIGHT=150></APPLET>

所以我將類文件復制到與html文件[C:/ Dir_Fit /]相同的目錄中,並將上面的行更改為:

<APPLET CODE="Javascript_Java_Interaction_Demo.class" WIDTH=150 HEIGHT=150></APPLET>

現在它可以工作了,它將顯示一個警報窗口。

所以,我的問題是為什么當我指定代碼庫時它不起作用? 根據Java文檔,如果類文件位於不同的目錄中,則可以通過代碼庫告訴它,該applet將會顯示,但是如果您鍵入一些文本並單擊該按鈕,則什么也不會發生,我嘗試了不同的方法來指定代碼庫:

    <APPLET CODEBASE="file:///C:/Dir_Fit/build/classes/" CODE="Javascript_Java_Interaction_Demo.class" WIDTH=150 HEIGHT=150></APPLET>

    <APPLET CODEBASE="C:/Dir_Fit/build/classes/" CODE="Javascript_Java_Interaction_Demo.class" WIDTH=150 HEIGHT=150></APPLET>

    <APPLET CODEBASE="build/classes/" CODE="Javascript_Java_Interaction_Demo.class" WIDTH=150 HEIGHT=150></APPLET>

<APPLET CODE="C:/Dir_Fit/build/classes/Javascript_Java_Interaction_Demo.class" WIDTH=150 HEIGHT=150></APPLET>

但是,它們都不起作用,為什么呢? 我不希望類文件與htmls位於同一目錄中。 解決方法是什么?

坦率

它可能與Java 6 Update 10中所做的更改有關。發布之后,我的小程序開始失敗,出現ClassNotFoundExceptions獨立於瀏覽器的情況-奇怪的是,在此之前,他們使用6u7。 首先,我想到了混亂的安裝或配置,但是后來其他人在他們的系統中也經歷了同樣的事情。

我的反復試驗得出的結果與您的觀察結果完全相同,即,即使我指定了一個空的codebase屬性,我的applet也會失敗。

谷歌搜索(今天)不會產生任何有意義的結果或發出錯誤報告。 我猜想代碼庫屬性用法的規則在版本之間會有所變化-也許舊的規則不夠嚴格,或者不符合某些規范。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM