测试JCTerm,javaapplet终端模拟器,可以在Eclipse中工作,但不能在浏览器中工作

测试JCTerm,javaapplet终端模拟器,可以在Eclipse中工作,但不能在浏览器中工作,java,applet,jsch,appletviewer,Java,Applet,Jsch,Appletviewer,测试未修改版本的JCTerm(终端模拟器,可以用作小程序;我想使用小程序功能),在Eclipse的AppletViewer中一切似乎都正常,但在网页中测试生成的jar文件时,所有选项都会显示一个带有闪烁黄色警告符号的消息框,并且什么也不做。某些选项显示“在此设置之前建立连接”错误 我感兴趣的选项是“文件”菜单中的“打开SHELL会话…”。当尝试“打开SHELL会话…”选项时,小程序的Java控制台会显示这些内容,这似乎是直接相关的。我不知道这意味着什么 network: Connecti

测试未修改版本的JCTerm(终端模拟器,可以用作小程序;我想使用小程序功能),在Eclipse的AppletViewer中一切似乎都正常,但在网页中测试生成的jar文件时,所有选项都会显示一个带有闪烁黄色警告符号的消息框,并且什么也不做。某些选项显示“在此设置之前建立连接”错误

我感兴趣的选项是“文件”菜单中的“打开SHELL会话…”。当尝试“打开SHELL会话…”选项时,小程序的Java控制台会显示这些内容,这似乎是直接相关的。我不知道这意味着什么

    network: Connecting http://xxx.xx.xx.xxx/crossdomain.xml with proxy=DIRECT
    network: Connecting http://xxx.xx.xx.xxx:80/ with proxy=DIRECT
    java.security.PrivilegedActionException: java.net.ConnectException: Connection refused: connect
        at java.security.AccessController.doPrivileged(Native Method)
        at com.sun.deploy.net.CrossDomainXML.check(Unknown Source)
        at com.sun.deploy.net.CrossDomainXML.check(Unknown Source)
        at sun.plugin2.applet.Applet2SecurityManager.checkConnect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at java.net.Socket.<init>(Unknown Source)
        at java.net.Socket.<init>(Unknown Source)
        at com.jcraft.jsch.Util$1.run(Util.java:354)
        at java.lang.Thread.run(Unknown Source)
    Caused by: java.net.ConnectException: Connection refused: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(Unknown Source)
        at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
        at java.net.PlainSocketImpl.connect(Unknown Source)
        at java.net.SocksSocketImpl.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at sun.net.NetworkClient.doConnect(Unknown Source)
        at sun.net.www.http.HttpClient.openServer(Unknown Source)
        at sun.net.www.http.HttpClient.openServer(Unknown Source)
        at sun.net.www.http.HttpClient.<init>(Unknown Source)
        at sun.net.www.http.HttpClient.New(Unknown Source)
        at sun.net.www.http.HttpClient.New(Unknown Source)
        at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
        at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
        at com.sun.deploy.net.CrossDomainXML$2.run(Unknown Source)
        ... 10 more    
网络:正在连接http://xxx.xx.xx.xxx/crossdomain.xml 使用proxy=DIRECT
网络:连接http://xxx.xx.xx.xxx:80/ 使用proxy=DIRECT
java.security.PrivilegedActionException:java.net.ConnectException:拒绝连接:连接
位于java.security.AccessController.doPrivileged(本机方法)
位于com.sun.deploy.net.CrossDomainXML.check(未知源)
位于com.sun.deploy.net.CrossDomainXML.check(未知源)
位于sun.plugin2.applet.Applet2SecurityManager.checkConnect(未知源)
位于java.net.Socket.connect(未知源)
位于java.net.Socket.connect(未知源)
位于java.net.Socket。(未知源)
位于java.net.Socket。(未知源)
位于com.jcraft.jsch.Util$1.run(Util.java:354)
位于java.lang.Thread.run(未知源)
原因:java.net.ConnectException:连接被拒绝:连接
位于java.net.PlainSocketImpl.socketConnect(本机方法)
位于java.net.PlainSocketImpl.doConnect(未知源)
位于java.net.PlainSocketImpl.connectToAddress(未知源)
位于java.net.PlainSocketImpl.connect(未知源)
位于java.net.socksocketimpl.connect(未知源)
位于java.net.Socket.connect(未知源)
位于sun.net.NetworkClient.doConnect(未知源)
位于sun.net.www.http.HttpClient.openServer(未知来源)
位于sun.net.www.http.HttpClient.openServer(未知来源)
在sun.net.www.http.HttpClient。(来源不明)
位于sun.net.www.http.HttpClient.New(未知来源)
位于sun.net.www.http.HttpClient.New(未知来源)
位于sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(未知源)
位于sun.net.www.protocol.http.HttpURLConnection.plainConnect(未知源)
位于sun.net.www.protocol.http.HttpURLConnection.connect(未知源)
位于com.sun.deploy.net.CrossDomainXML$2.run(未知源)
... 10多

可以在这里找到该程序正常工作的示例,

这看起来像是一个安全问题

默认情况下,未签名的Java小程序只能在从加载时连接到主机。此外,如果要连接到的主机允许使用其crossdomain.xml文件执行此操作,则还可以连接到其他主机

从堆栈跟踪判断,您希望连接到没有HTTP服务器的主机,因此无法提供crossdomain.xml文件。由于这个原因,您在这里得到这个例外

有以下几种解决方法:

  • 将小程序放在以后要使用SSH连接的同一web服务器上。(每个小程序都可以连接到自己的主机。)
  • 让SSH服务器有一个最小的web服务器和一个crossdomain.xml。(crossdomain.xml必须允许来自小程序服务器的内容访问此服务器。)
  • 对小程序进行签名(并让用户信任它)。(允许签名和受信任的小程序执行所有操作。)
您链接的应用程序使用最后一种方法,这就是为什么即使在连接到您的服务器时它也能工作。

我是jcterm的作者。 位于的jar文件已进行数字签名。
因此,如果您将这些文件复制并安装到web服务器中,它就会工作。

是的,对jar文件进行签名解决了问题。我发现有助于了解如何对jar文件进行数字签名的资源:和。