我在我的第一个编程课程中,现在我已经到了学期结束了。我有一个在线投资组合,我分享我的大学成就。在本学期的这一点上,我想将我创建的一些简单的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中创建的原始文件的副本,但它具有相同的名称,因此我不认为这会导致在不同目录中出现任何问题。
我不知道还能做什么。请帮忙!这让我感到兴奋了一个星期。我花了几个小时做一些如此简单的事情。
答案 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”的发展方向。我只是没有看到任何提及引号的提示......