我正在尝试通过命令appletviewer filename.html
启动applet
其中包含用于启动具有特定宽度和高度的applet的代码。
当我启动命令时,我收到以下错误:
java.lang.ClassNotFoundException: ”dnaapplet.class”
at sun.applet.AppletClassLoader.findClass(AppletClassLoader.java:219)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.applet.AppletClassLoader.loadClass(AppletClassLoader.java:152)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at sun.applet.AppletClassLoader.loadCode(AppletClassLoader.java:633)
at sun.applet.AppletPanel.createApplet(AppletPanel.java:795)
at sun.applet.AppletPanel.runLoader(AppletPanel.java:724)
at sun.applet.AppletPanel.run(AppletPanel.java:380)
at java.lang.Thread.run(Thread.java:745)
我控制了有关通过java -cp
设置类路径的其他帖子,但我找不到解决方案。
html文件的代码如下:
<applet
code=”dnaapplet.class”
width="835"
height="180"
></applet
以下是applet的代码:
import java.applet.Applet;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class main_class extends Applet {
Label Lseq1=new Label("Sequenza 1:");
Label Lseq2=new Label("Sequenza 2:");
TextField textSeq1=new TextField(30);
TextField textSeq2=new TextField(30);
TextField field_diff=new TextField(10);
TextField field_perc=new TextField(10);
Button compute=new Button("Confronta");
Button reset=new Button("Resetta");
Label error_label=new Label("Messaggi:");
TextField msg=new TextField(33);
public void init() {
//aggiunta degli oggetti all'applet
add(Lseq1);
add(textSeq1);
add(Lseq2);
add(textSeq2);
add(new Label("Differenze:"));
add(field_diff);
add(new Label("Uguali al:"));
add(field_perc);
add(compute);
add(reset);
compute.addActionListener(seqInserted);
reset.addActionListener(click);
add(error_label);
add(msg);
msg.setText("Inserire due sequenze di uguale lunghezza.");
}
ActionListener seqInserted=new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
//getta il testo dei due campi di testo
String seq1=textSeq1.getText();
String seq2=textSeq2.getText();
int length1=seq1.length();
int length2=seq2.length();
/*il primo if verifica se le sequenze sono lunghe uguali, il secondo
verifica se tutti i caratteri inseriti sono validi: se vengono superati
entrambi i controlli, si passa alla computazione delle differenze*/
if (length1==length2) {
//if che controlla se i caratteri inseriti sono validi e chiama
//le relative funzioni
if ((main_class.checkInput(seq1, seq2, length1))==1) {
//chiamata delle funzioni di svolgimento dei calcoli
int diff=main_class.confrontoSequenze(seq1, seq2, length1);
field_diff.setText(""+diff);
field_perc.setText(""+main_class.percentuale(diff, length1)+"%");
//almeno un carattere non è valido
} else {
msg.setText("Carattere inserito non valido");
textSeq1.setText("");
textSeq2.setText("");
field_diff.setText("");
field_perc.setText("");
}
//questo else si apre quando le stringhe sono di lunghezza diversa
} else {
textSeq1.setText("");
textSeq2.setText("");
field_diff.setText("");
field_perc.setText("");
msg.setText("Errore:lunghezza sequenze diversa.");
}
}
};
//gestore del click del reset button
ActionListener click=new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
textSeq1.setText("");
textSeq2.setText("");
field_diff.setText("");
field_perc.setText("");
msg.setText("");
}
};
}
/*funzione che restituisce 0 almeno un carattere non è valido,
1 se tutti i caratteri sono validi*/
public static int checkInput(String seq1,String seq2, int length ) {
int check1=1;
int check2=1;
int total_check=1;
for (int i=0; i<=length-1; i++) {
if (seq1.charAt(i)!='a' && seq1.charAt(i)!='A' && seq1.charAt(i)!='c' && seq1.charAt(i)!='C' && seq1.charAt(i)!='g' && seq1.charAt(i)!='G' && seq1.charAt(i)!='t' && seq1.charAt(i)!='T')
check1=0;
}
for (int i=0; i<=length-1; i++) {
if (seq2.charAt(i)!='a' && seq2.charAt(i)!='A' && seq2.charAt(i)!='c' && seq2.charAt(i)!='C' && seq2.charAt(i)!='g' && seq2.charAt(i)!='G' && seq2.charAt(i)!='t' && seq2.charAt(i)!='T')
check2=0;
}
if (check1==0 || check2==0)
total_check=0;
return total_check;
}
public static int confrontoSequenze (String seq1, String seq2,int lenght) {
int eq=0;
int diff=0;
for (int i=0; i<=lenght-1; i++) {
//controlla se le stringhe sono uguali
if (seq1.charAt(i)==seq2.charAt(i))
eq++;
else {
diff++;
}
}
return diff;
}
public static float percentuale(int diff, int lenght) {
float perc;
int eq=lenght-diff;
perc=(eq*100)/lenght;
return perc;
}
}
这是我的第一个小程序,所以也许我的代码并不完美。评论和字符串都是意大利语,对不起。这个小程序扩展了我去年用Java制作的程序,比较了两个DNA序列,并返回它们的相似程度。