2015-09-23 3 views
1

У меня проблема с апплетами, на которые я застрял часами. Я сделал простой калькулятор, который отлично работает в eclipse. Я также сделал простой html-документ (я изменил его больше раз, когда вы можете себе представить, в попытках заставить его работать), который включает в себя мой калькулятор. Проблема заключается в том, что всякий раз, когда я нажимаю «открыть с светлячками» на моем HTML документе, я получаю следующее сообщение об ошибке:ClassNotFoundException в java-апплетах?

Теперь я понимаю, что этот вопрос пришел раньше на интернете, но я на протяжении многих часов искали столько форумов, и я до сих пор не понял этого.

Я пробовал много вещей, пытаясь решить эту проблему.

Я уже пробовал включить heck Использовать совместимый с SSL 2.0 формат ClientHello.

Я попытался очистить кэш Java, перейдя на панель управления Java, нажав «Настройки» в разделе «Временные файлы Интернета» и нажав «Удалить файлы». Ни одна из этих вещей ничего не сделала.

Я также попытался сохранить класс java изначально в eclipse в .java в блокноте и поместить это, и апплет в тот же каталог, который снова ничего не сделал.

И теперь, вместо моих предыдущих попыток перемещения файла .java, я переместил .html файла в папку Src, где все мой код, как показан на скриншоте:

This directory is in my workspace in 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-документа. Я очень рад услышать от вас, спасибо вам, так много.

EDIT С AppletViewer Использование параметров командной строки

Я получил его на работу с AppletViewer, но весь смысл мне делать это, чтобы увидеть, что это будет выглядеть в реальном браузере, как светлячок, со всеми своими html и все. Вместо этого у меня получился тот же результат, что и у меня, просто запустив его в eclipse.

enter image description here

+0

'myappletclass.java'? С «классом не найден» ... И с снимком экрана вашего каталога. Возможно, это должно быть «myappletclass.class» ... Кроме того, вам не нужно «переопределять« paint », вы можете использовать' JLabel'. Вы также блокируете EDT своими циклами while, которые могут быть интересными, поэтому не просто поместите некоторые поля на апплет и кнопку вместо – MadProgrammer

+0

@MadProgrammer Большое вам спасибо за ваши отзывы. Но я попытался заменить код = "myappletclass.java" на код = "myappletclass.class" уже в моих предыдущих попытках, но ничего не происходит. –

+0

@MadProgrammer Кроме того, что вы подразумеваете под словом «Вы также блокируете EDT с помощью циклов while» Я был бы признателен, если бы вы объяснили :) –

ответ

0

спасибо MadProgrammer за помощь мне выяснить ответ, и мешает мне тратить больше 10 часов! Вот что я сделал: мне нужно было добавить codebase = file: // linkatbrowserbar в мой тег. После добавления в файл: // blah/blah/blah я столкнулся с всплывающим окном безопасности, в котором говорится, что моя безопасность не позволит использовать этот апплет. Затем я перешел в панель управления java в безопасности и добавил файл: // blah/blah/blah в список вещей, которые я могу передать в систему безопасности. Затем я открыл его через браузер и все! Это сработало!

Также обратите внимание, что вам нужно сначала скомпилировать его в командной строке, чтобы превратить его в .class из .java. Тогда вы можете сделать все эти шаги! :)