【发布时间】:2015-12-20 05:01:44
【问题描述】:
我遇到了小程序问题,我已经坚持了好几个小时。我制作了一个在 Eclipse 中运行良好的简单计算器小程序。我还制作了一个包含我的计算器小程序的简单 html 文档(我已经对其进行了多次更改,您可以想象它会努力使其工作)。问题是,每当我在我的 html 文档上点击“用 firefox 打开”时,我都会收到以下错误:
现在,我知道这个问题以前在互联网上出现过,但是我已经在这么多论坛上搜索了这么多小时,但我仍然没有弄明白。
我尝试了很多方法来解决这个问题。
我已经尝试过启用使用 SSL 2.0 兼容的 ClientHello 格式。
我已尝试通过转到 Java 控制面板、单击 Internet 临时文件下的设置并单击删除文件来清理 Java 缓存。这些事情都没有做任何事情。
我还尝试将最初在 Eclipse 中的 java 类保存到记事本中的 .java 中,然后将它和小程序放在同一个目录中,但又什么也没做。
现在,我不再尝试移动 .java 文件,而是将 .html 文件移动到我所有代码所在的 src 文件夹中,如下图所示:
这个目录在我的工作空间中的 src
这是我的 html 代码,其中包含了 java 代码:
<html>
<head>
<title> Hello </title>
</head>
<body>
<APPLET code = "myappletclass.java" width = "400" height = "100"
alt = "Not working"
>
</APPLET>
</body>
</html>
这是我经过数百万次修改后的 html 代码,所以很可能我已经尝试过这种不同的形式(即没有 alt,或者使用小写的 APPLET ...),但我完全愿意接受所有建议.
这是与之配套的 java 代码:
import java.awt.*;
import javax.swing.*;
public class myappletclass extends JApplet {
private double sum;
public void init() { //started by the browser when the Java program (myappletclass.class) is loaded and run by the browser. The programmer does not write a call to the init() method.
double n1 = 0;
double n2 = 0;
boolean successone = false; //keeps try catch running
while (!successone) {
try {
String fn = JOptionPane.showInputDialog("Enter first number:"); //Whatever they enter will be stored in string fn
n1 = Double.parseDouble(fn);
successone = true; //wont go through while loop because is true now!
sum += n1;
}
catch (Exception e) {
JOptionPane.showMessageDialog(null, "ENTER A NUMBER", "Nu uh", JOptionPane.WARNING_MESSAGE);
}
}
boolean successtwo = false; //keeps try catch running
while (!successtwo) {
try {
String sn = JOptionPane.showInputDialog("Enter second number:"); //Whatever they enter will be stored in string sn
n2 = Double.parseDouble(sn);
successtwo = true; //wont go through while loop because is true now!
sum += n2;
}
catch (Exception e) {
JOptionPane.showMessageDialog(null, "ENTER A NUMBER", "Nu uh", JOptionPane.WARNING_MESSAGE);
}
}
}
public void paint(Graphics g) {
super.paint(g); //call superclass of paint
g.drawString("The sum is " + sum, 25, 25);
}
}
此时,我急切地想弄清楚这是如何工作的。同样,我花了无数个小时来弄清楚如何做到这一点,所以我真的非常感谢您对如何在 Firefox 中使用我的 html 文档显示我的小程序的建设性批评和反馈。很高兴收到您的来信,非常感谢。
使用命令提示符使用 APPLETVIEWER 进行编辑
我让它与appletviewer一起工作,但我这样做的全部目的是看看它在像firefox这样的真实浏览器中的样子,以及我所有的html和所有内容。相反,我得到的结果与仅在 eclipse 中运行它所得到的结果相同。
【问题讨论】:
-
myappletclass.java?使用“找不到类”...以及目录的屏幕截图。也许应该是myappletclass.class...此外,您不需要“覆盖”paint,您可以使用JLabel。您还使用while循环阻止了 EDT,这可能很有趣,为什么不只是在小程序上放置一些字段和一个按钮 -
@MadProgrammer 非常感谢您的反馈。但是,在我之前的尝试中,我已经尝试将 code = "myappletclass.java" 替换为 code = "myappletclass.class",但没有任何反应。
-
@MadProgrammer 另外,您所说的“您还用您的 while 循环阻塞了 EDT”是什么意思,如果您能解释一下,我将不胜感激 :)
-
Concurrency in Swing。您冒着阻塞负责管理用户输入(除其他外)的线程的风险
-
好的,我让你的代码可以工作了。我将您的
.class和,html文件放在同一个目录中,并且能够使用appletviewer加载.html文件(但我必须在同一个目录中)
标签: java html eclipse applet dir