0

こんにちは私はアプレットの初心者です。何かを理解するのに助けが必要です。

そこで、アプレットのボタンがクリックされたときに別のクラスファイルとそのメソッドを呼び出すEclipseでアプレットを作成しました。

public class mainApplet extends JApplet {
private JTextField textField;
private JTextField textField_1;
private JTextField textField_2;

private int x;
private int y;
private int result;
public mainApplet() {

    textField = new JTextField();
    textField.setColumns(10);
    textField_1 = new JTextField();
    textField_1.setColumns(10);
    textField_2 = new JTextField();
    textField_2.setColumns(10);

    JButton btnCalculate = new JButton("Calculate");
    final JCheckBox ChckbxADD= new JCheckBox("Add");
    final JCheckBox chckbxLaunch = new JCheckBox("Launch  Browser");

    GroupLayout groupLayout = new GroupLayout(getContentPane());
    groupLayout.setHorizontalGroup(
        groupLayout.createParallelGroup(Alignment.LEADING)
            .addGroup(groupLayout.createSequentialGroup()
                .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
                    .addGroup(groupLayout.createSequentialGroup()
                        .addGap(49)
                        .addComponent(textField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addGap(26)
                        .addComponent(textField_1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                    .addGroup(groupLayout.createSequentialGroup()
                        .addGap(89)
                        .addGroup(groupLayout.createParallelGroup(Alignment.TRAILING)
                            .addComponent(btnCalculate)
                            .addComponent(textField_2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                            .addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
                                .addComponent(ChckbxADD)
                                .addComponent(chckbxLaunch)))))
                .addContainerGap(203, Short.MAX_VALUE))
    );
    groupLayout.setVerticalGroup(
        groupLayout.createParallelGroup(Alignment.LEADING)
            .addGroup(groupLayout.createSequentialGroup()
                .addGap(48)
                .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
                    .addComponent(textField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                    .addComponent(textField_1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                .addGap(18)
                .addComponent(ChckbxADD)
                .addGap(3)
                .addComponent(chckbxLaunch)
                .addGap(20)
                .addComponent(btnCalculate)
                .addGap(28)
                .addComponent(textField_2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .addContainerGap(74, Short.MAX_VALUE))
    );
    getContentPane().setLayout(groupLayout);


    btnCalculate.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            Functions func = new Functions();


            if (ChckbxADD.isSelected()){
                x=Integer.parseInt(textField.getText());
                y=Integer.parseInt(textField_1.getText());
                result=func.addition(x, y);
                textField_2.setText(String.valueOf(result));

            }
            if(chckbxLaunch.isSelected()){
                func.Launch();

            }

        }
    });

}

}

これは、日食を実行すると機能します。クラスファイルをアプレットファイルと一緒にjar(Calc.jar)にエクスポートしました。次に、次の単純なhtmlを使用してアプレットを呼び出しました。このhtmlはローカルファイルです。

   <HTML>
     <HEAD>
        </HEAD>
     <BODY>
     <div >
     <APPLET CODE="mainApplet.class" archive="Calc.jar" WIDTH="800" HEIGHT="500">
     </APPLET>
     </div>
    </BODY>
     </HTML>

アプレットはMainAppletクラスにあり、Functionsクラスを呼び出します。

   public class Functions {

        public void Launch(){

WebDriver driver= new FirefoxDriver();
driver.get("http://www.google.com");


}

public int addition(int x, int y){

    int result;
    result=x + y;
    return result;

}

}

ブラウザでアプレットを起動し、[ブラウザを起動]チェックボックスをオンにしてボタンをクリックすると、Firefoxウィンドウが開いてgoogle.comが起動します。日食では、これは完全に起こります。ただし、アプレットがローカルサイトに埋め込まれている場合、[ブラウザの起動]チェックボックスをオンにしてボタンをクリックしても何も起こりません。アプレット(加算)で使用され、設計どおりに機能する別の関数があります。ユーザーは2つのJtextfieldに2つの数値を入力でき、「追加」のチェックボックスがオンになっています。ボタンをクリックすると、結果がアプレットの別のjtextfieldに表示されます。これは正常に機能しますが、他の機能は機能しません。

アップデート:

コンソールの例外は次のとおりです。

Exception in thread "AWT-EventQueue-2" java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriver
    at mainApplet$1.actionPerformed(mainApplet.java:75)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$200(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.WebDriver
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 36 more 

助けてくれてありがとう。

4

1 に答える 1

0

Web ページで実行すると、 Java コンソールで何が報告されますか? セキュリティに関連する何かが表示されると思います-たとえばAccessControlException.

コンソールに次のエラーが表示されます。

Exception in thread "AWT-EventQueue-2" java.lang.NoClassDefFoundError:

変化する:

archive="Calc.jar" 

に:

archive="Calc.jar,x.jar" 

..ここで、クラスx.jarを含む Jar の名前です。WebDriver

于 2013-03-17T05:30:23.030 に答える