尝试通过java web start运行我的jar时遇到以下异常:
com.sun.deploy.net.FailedDownloadException: Unable to load resource: http://localhost /ValidatorWEB/validator.jnlp
at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
这是包装的例外:
java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
这是我的.jnlp文件:
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://localhost/ValidatorWEB/"
href="validator.jnlp">
<information>
<title>Validator</title>
<vendor>My Company</vendor>
</information>
<resources>
<!-- Application Resources -->
<j2se version="1.6+"
href="http://java.sun.com/products/autodl/j2se"/>
<jar href="WEB-INF/lib/validator.jar" main="true" />
</resources>
<application-desc
name="Validator"
main-class="webstartComponentArch.DynamicTreeApplication"
width="300"
height="300">
</application-desc>
<update check="background"/>
我将整个东西作为一个简单的WAR部署到我的本地机器上的glassfish v2.1 。 validator.jar位于WEB-INF / lib中,我访问jnlp的jnlp和jsp页面位于ValidatorWEB文件夹的根目录。
谷歌搜索没有帮助。我试过关闭我的防火墙,它仍然做同样的事情。我在Glassfish中有适当的Mime类型集。还有其他我忘了做的事吗?答案 0 :(得分:1)
你知道http://localhost
实际指向的是什么吗?它指向在端口80的 localhost 上运行的Web服务器.Localhost == 127.0.0.1 ==本地计算机。
由于Webstart又称JNLP应用程序在客户端计算机上运行,它将尝试连接相同(本地)计算机上的Web服务器。你不想那样做。将URL更改为指向运行Web应用程序的服务器计算机上的实际Web服务器以及要从中下载JNLP的位置。
答案 1 :(得分:1)
所以我明白了。问题出在我指定基本网址的地方:
<jnlp spec="1.0+" codebase="http://localhost/ValidatorWEB/" href="validator.jnlp">
当我部署到Glassfish时,我将访问Web应用程序的URL实际上是:
http://localhost:8080/ValidatorWEB/
我不得不将我的代码库更改为:
<jnlp spec="1.0+" codebase="http://localhost:8080/ValidatorWEB/" href="validator.jnlp">
在部署到远程服务器时,我必须牢记这一点。
感谢所有的输入!
答案 2 :(得分:0)
答案 3 :(得分:0)
localhost
之后的空格让我产生怀疑 - 你是否有可能在某处定义了带有尾随空格的主机名,并且web start没有任何主机名?
另外,您是否尝试过wget
ting(或类似)列出的jnlp网址?来自请求的响应将让您了解当Java发出相同请求时发生的情况。
答案 4 :(得分:0)
我不知道它是否相关但在给出资源jar的地址时,我不会使用“WEB-ıNF/ lib”,客户端机器无法看到web-inf内部,你应该把那个jar放在web应用程序里面而不是web- INF。