2012-01-03 74 views
0

我想用Java Web Start运行JAR文件。不幸的是,我必须动态加载JAR文件(它存储在Moodle中)。因此,到JAR文件的链接不会以“.jar”结尾。它实际上是一个调用动态加载JAR文件的PHP脚本。如果我用浏览器打开链接,则会下载JAR文件。无论如何,Java Web Start无法像这样下载它。我得到以下异常:如何从JNLP资源标签中的不以* .jar结尾的资源加载JAR?

com.sun.deploy.net.FailedDownloadException:的ressource konnte nicht geladen werden:http://localhost/moodle22/pluginfile.php/39/mod_assignment/my_file 在com.sun.deploy.net.DownloadEngine.actionDownload(来源不明) 在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) at com .sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source) at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source) at com.sun.javaws.LaunchDownload $ D ownloadTask.call(Unknown Source) at java.util.concurrent.FutureTask $ Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor $ Worker .runTask(来源不明) 在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(来源不明) 在java.lang.Thread.run(来源不明)

而且封装例外:

java.io.IOException:无效的jar文件 at com.sun.deploy.net.HttpDownload Helper.download(来源不明) 在com.sun.deploy.cache.Cache.downloadResourceToTempFile(来源不明) 在com.sun.deploy.cache.Cache.downloadResourceToCache(来源不明) 在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) at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source) at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source) at com.sun.javaws .LaunchDownload $ DownloadTask.call(未知来源) at java.uti l.concurrent.FutureTask $ Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(Unknown Source) at java.util .concurrent.ThreadPoolExecutor $ Worker.run(来源不明) 在java.lang.Thread.run(来源不明)

我的JNLP文件:

<?xml version="1.0" encoding="utf-8"?> 
<jnlp codebase="http://localhost"> 
    <information> 
    <title>Test</title> 
    <vendor>Me</vendor> 
    <homepage href="http://www.google.com"/> 
    <description>Test</description> 
    <offline-allowed/> 
    </information> 
    <security> 
    <all-permissions/> 
    </security> 
    <resources> 
    <java version="1.5+"/> 
    <jar href="moodle22/pluginfile.php/39/mod_assignment/my_file"/> 
    </resources> 
    <application-desc> 
    <argument>--argument</argument> 
    </application-desc> 
</jnlp> 

如果我引用JAR通过直接链接那样,一切都按预期工作:

<resources> 
    <java version="1.5+"/> 
    <jar href="moodle22/mod/assignment/type/something/tmp/test.jar"/> 
</resources> 
+3

不能真正帮助很大,除非我们知道什么'pluginfile.php'做,以及究竟它服务。什么是内容类型?你是用ASCII模式写出来的吗?我真的不知道Moodle,但是 - 为什么它不能扩展? – Amadan 2012-01-03 14:00:55

回答

1

谢谢@Amadan!

Java Web Start实际上可以从不以“.jar”结尾的资源加载JAR。人们只要设置相应的内容类型:

Content-type: application/java-archive 

然后它完美:-)