Мне удалось (после серьезной борьбы) загрузить мой апплет в мой браузер Firefox, но в коде Java для моего апплета JSObject.getWindow (this) возвращает нуль по какой-то причине, которую я не могу понять.
Вот мой Java-код для апплета:
import java.applet.*;
import javax.swing.*;
import netscape.javascript.*;
import java.net.*;
import java.io.*;
import java.awt.*;
public class JavaSocketBridge extends JApplet {
// Instance variables
JSObject browser = null; // The browser
Socket socket = null; // The current socket
PrintWriter out = null; // Output
Listener listener = null; // Listens for input
boolean running = false; // Am I still running?
String address = null; // Where you will connect to
int port = -1; // Port
boolean connectionDone = false; // Thread synchronization
public String message = "";
// Initialize
public void init(){
try
{
browser = JSObject.getWindow(this); //see bottom of code for comment
}
catch(Exception e)
{
message += "EXCEPTION: " + e.getMessage() + " THIS: " + this;
}
}
// Stop and destroy
public void stop(){
running = false;
disconnect();
}
public void destroy(){
running = false;
disconnect();
}
public void start(){
//other code here
}
}
Я пытался переместить browser = JSObject.getWindow(this);
линия к началу start()
метод как предложено Вот, но я все еще остаюсь без удачи. И текст, содержащийся в message
переменная:
Сообщение: ИСКЛЮЧЕНИЕ: null ЭТО: JavaSocketBridge [panel50,0,0,0×0, недействительно, layout = java.awt.BorderLayout, rootPane = javax.swing.JRootPane [, 0,0,0×0, недействительно, layout = javax.swing. JRootPane $ RootLayout, alignmentX = 0,0, alignmentY = 0,0, граница =, е, флаги = 16777673, MaximumSize =, MinimumSize =, PreferredSize =], rootPaneCheckingEnabled = истина]
Вот мой PHP-файл:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<script type="text/javascript" src="JavaSocketBridge/java_socket_bridge.js"></script>
</head>
<body>
<applet id="JavaSocketBridge" code="HelloWorldApplet.class" archive="./JavaSocketBridge/JavaSocketBridge.jar" height="200" width="2000"></applet>;
<?php
echo " <script>
console.log('Applet is connected: ' + socket_connect('".$_SESSION['ip']."', '".$_SESSION['port']."'));
console.log('Flag Status: ' + is_ready());
</script>";
?>
</body>
</html>
Задача ещё не решена.
Других решений пока нет …