javajavascriptappletliveconnect

How to get an absolute file path with a Java applet


I'm attempting to get an absolute file path in a web browser. I've learned that it is not possible using plain HTML and javascript, and that a java applet is the best route. Unfortunately, my knowledge of java is rudimentary at best. So far I have this java code:

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import java.awt.Color;
/*
   <OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" 
           width=150 height=100 
 codebase="http://java.sun.com/products/plugin/1.3/jinstall-13-win32.cab#Version=1,3,0,0"> 
     <PARAM NAME="code" value="FileApplet.class">
   </OBJECT>
 */

public class fileabs extends JApplet
{
   private JTextField tfCount;
   final JFileChooser fc = new JFileChooser();

  public void init() {
      setBackground(Color.WHITE);
        JPanel p = new JPanel( new FlowLayout(FlowLayout.CENTER, 15, 15));
        p.add(new JLabel("Select File: "));
        tfCount = new JTextField(50);
        tfCount.setEditable(false);
        p.add(tfCount);
        JButton b2 = new JButton("Browse...");
        p.add(b2);
        b2.addActionListener( new ActionListener(){
            public void actionPerformed(ActionEvent ae) {
               tfCount.setText("dsds");
                int returnVal = fc.showOpenDialog(fileabs.this);
                tfCount.setText(fc.getSelectedFile().getAbsolutePath());
            }
        } );

        // p.add(label);
        add(p);
    }

  public String getFilePath() {
    return tfCount.getText();
  }
}

From what I've read at http://jdk6.java.net/plugin2/liveconnect/#JS_TO_JAVA, I can call applet methods from javascript, so I came up with this test web page:

<html>
    <head>
    </head>
    <body>
        <applet id="fileabs" archive="fileabs.jar" code="fileabs" width="960" height="60"></applet>
        <a href="#;" onclick="test()">Test</a>
    <script>
        test = function() {
            alert(fileabs.getFilePath());
        };
    </script>
    </body>
</html>

However, in the firebug console I get:

TypeError: fileabs.getFilePath is not a function

I feel like I'm missing something obvious. Can anyone help me figure out what's wrong with what I have here?


Solution

  • The code works as written. The issue turned out to be a cached version of the applet that didn't have the method I was calling.