ここで、サーバー パスからテキスト ファイルをダウンロードし、ubuntu では /tmp/ に、windowsXP では C:windows/temp/ に OLFile として保存し、それをデフォルトのプリンターに送信するアプレットを作成しました。これは ubuntu OS でのみ機能しますが、 WindowsXP の firefox では動作しません。Eclipse (windowsXP) からアプレット ソース ファイルを実行すると、動作します。java コンソールは、firefox (windowsXP から) でアプレットをロードしているときに、スレッドで例外を出力する場合があります。どうしてこうなるのか?Windows で何かを構成する必要がありますか? Java コンソール出力 (windowsXP から) とアプレットのソース コードを以下に示します。手伝ってくれませんか....
コンソール出力:
Exception in thread "AWT-EventQueue-2" java.lang.IllegalStateException: Applet's parent container not set up
at sun.plugin2.applet.Plugin2Manager.start(Unknown Source)
at sun.plugin2.main.client.PluginMain$StartAppletRunner.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(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.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)
Java アプレットのソース コード:
import java.applet.Applet;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
public class FilePrintApplet extends Applet
{
/**
*
*/
public void start()
{
try {
String server=this.getParameter("SERVER");
String filename=this.getParameter("FILENAME");
String osname=System.getProperty("os.name");
String filePath="";
URL url = new URL("http://"+server+"/openLypsaa/reports/report_oc/"+filename);
URLConnection connection = url.openConnection();
InputStream is = connection.getInputStream();
if("Linux".equals(osname))
{
filePath = "/tmp/OLFile";
}
else
{
filePath = "C:\\\\WINDOWS\\\\Temp\\\\OLFile";
}
OutputStream output = new FileOutputStream(filePath);
byte[] buffer = new byte[256];
int bytesRead = 0;
while ((bytesRead = is.read(buffer)) != -1)
{
System.out.println(bytesRead);
output.write(buffer, 0, bytesRead);
}
output.close();
if("Linux".equals(osname))
Runtime.getRuntime().exec("lp /tmp/OLFile").waitFor();
else
Runtime.getRuntime().exec("print C:\\\\WINDOWS\\\\Temp\\\\OLFile").waitFor();
}
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}