如何在Mac OS 10.6.6上运行Java Applet

时间:2011-03-29 04:43:32

标签: java html macos safari applet

我在我的第一个编程课程中,现在我已经到了学期结束了。我有一个在线投资组合,我分享我的大学成就。在本学期的这一点上,我想将我创建的一些简单的Applet上传到我的在线作品集中。我的投资组合托管在Weebly.com上。我尝试将文件上传到主机站点并使用简单标签在html中运行applet。我很确定我正在使用正确的目录访问这些文件。但在我们在那里得出任何结论之前,我决定在本地运行applet以确保我正确地完成所有事情。我在运行OS 10.6.6的macbook pro上。在Java Preferences中,我的Java SE版本是64位Java SE 6和32位Java SE 6。我的插件版本是1.6.0(可在/ System / Library / Java / JavaVirtualMachines中找到)。这些是我机器上唯一的版本。我的研究告诉我,我可能会遇到版本上的分歧。一些论坛建议回到插件版本1.5(虽然,我不知道如何)。我现在很确定苹果已经将Safari更新为64位版本。我也将Eclipse设置为1.6。一切似乎与我在同一页上。

是的,我已经一遍又一遍地阅读了所有相关的问题。他们中的大多数现在都有点过时了。

这是我的applet代码:

/** 
 * Class NightScene - Draws a night scene (just for fun). 
 *  
 * @author Alex Stout 
 * @version February 8, 2011 
 */ 
package lab05_1; 
import java.awt.*; 
import javax.swing.*; 

public class NightScene extends JApplet 
{ 
        /** 
         * Paint method for applet. 
         *  
         * @param  g   the Graphics object for this applet 
         */ 
        public void paint(Graphics g) 
        { 
            g.setColor(Color.BLUE.darker().darker().darker());
            g.fillRect(0,0, this.getWidth(), this.getHeight());

            this.drawMoon(g);

            this.drawStars(g);

            this.drawHorizon(g);

        }
        public void drawStars(Graphics h)
        {   
            for (int i = 0 ; i <= this.getWidth()*5; i++)
            {
                int x = (int)(Math.random()*this.getWidth());
                int y = (int)(Math.random()*this.getHeight());

                h.setColor(Color.WHITE);
                h.fillOval (x, y, (int) (Math.random()*3)+1, (int) (Math.random()*3)+1);
            }

        }
        public void drawMoon(Graphics j)
        {
            int x = (int)(Math.random()*(this.getWidth()-200)+50);
            int y = (int)(Math.random()*(this.getHeight()-200)+50);

            j.setColor(Color.YELLOW.brighter().brighter());
            j.fillOval (x, y, this.getWidth()/10, this.getWidth()/10);
            j.setColor (Color.BLUE.darker().darker().darker());
            j.fillOval (x-(this.getWidth()/100), y-(this.getWidth()/100), this.getWidth()/10, this.getWidth()/10);
        }   

        public void drawHorizon(Graphics k)
        {
            int xi = 0;
            int xj = this.getWidth();
            int yj = this.getHeight();
            int rh = this.getHeight()-this.getHeight()/8;

            for (int i=0; i < xj; i++)
            {
                k.setColor(Color.BLACK);
                k.drawLine(xi, yj, xi, rh);

                k.setColor(Color.BLUE);
                if(Math.random()<0.50)
                {
                    k.drawLine(xi++, rh++, xi, rh++);
                }
                else
                {
                    k.drawLine(xi++, rh--, xi, rh--);
                }

            }           
        }
}    

这是我的HTML代码:

<html>
<Applet code = NightScene.class codebase = "." width = "400" height = "400">
</Applet>
</html>

这是Java控制台输出:

Java Plug-in 1.6.0_24
Using JRE version 1.6.0_24-b07-334-10M3326 Java HotSpot(TM) 64-Bit Server VM
User home directory = /Users/myUserName

有些人建议使用codebase =“。”所以我试着无济于事。无论有没有它都无效。我试过放入完整的目录路径,没有成功。我试过引号,并没有引用类名。最后我尝试使用和不使用.class。我尝试制作一个lab05_1子目录,因为这是代码中的包名。没运气。类文件和html文件都在桌面上的同一文件夹中。类文件是在Eclipse中创建的原始文件的副本,但它具有相同的名称,因此我不认为这会导致在不同目录中出现任何问题。

我不知道还能做什么。请帮忙!这让我感到兴奋了一个星期。我花了几个小时做一些如此简单的事情。

2 个答案:

答案 0 :(得分:1)

我没有Mac方便检查这个,但如果你改变你的HTML文件,它应该工作---你错过了NightScene.class的包名。

<html>
  <Applet code="lab05_1.NightScene.class" width="400" height="400"/>
</html>

APPLET标记的Oracle参考是here

从该页面开始:

  

代码 = appletFile

     

这是必需的   attribute给出文件的名称   包含applet的编译   Applet子类。这个文件是相对的   到applet的基本URL。它   不可能是绝对的。 CODE之一或   OBJECT必须存在。价值    appletFile 可以是这种形式    classname.class 或表单   的 packagename.classname.class


编辑:以防万一不清楚,目录应如此布局:

    +-top-level/
      |
      +-lab05_1/
      | |
      | +-NightScene.class
      |
      +-test.html

答案 1 :(得分:1)

现在可能已经老了,我刚刚发现这个页面试图回答一个不同的问题,但是对于它的价值,看看你的原始HTML和ORacle链接,我看到你没有在类文件名周围加引号。怀疑可能确实是问题的根源。实际上,这也许就是“Spong”的发展方向。我只是没有看到任何提及引号的提示......