【发布时间】:2012-01-03 13:52:23
【问题描述】:
我想用 Java Web Start 运行一个 JAR 文件。不幸的是,我必须动态加载 JAR 文件(它存储在 Moodle 中)。因此,指向 JAR 文件的链接不会以“.jar”结尾。它实际上是对动态加载 JAR 文件的 PHP 脚本的调用。如果我用浏览器打开链接,就会下载 JAR 文件。无论如何,Java Web Start 无法像那样下载它。我得到以下异常:
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(未知来源) 在 com.sun.deploy.net.DownloadEngine.getCacheEntry(未知来源) 在 com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(未知来源) 在 com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(未知来源) 在 com.sun.deploy.net.DownloadEngine.getResource(未知来源) 在 com.sun.javaws.LaunchDownload$DownloadTask.call(未知来源) 在 java.util.concurrent.FutureTask$Sync.innerRun(未知来源) 在 java.util.concurrent.FutureTask.run(未知来源) 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(未知来源) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(未知来源) 在 java.lang.Thread.run(Unknown Source)
以及封装的异常:
java.io.IOException: 无效的 jar 文件 在 com.sun.deploy.net.HttpDownloadHelper.download(未知来源) 在 com.sun.deploy.cache.Cache.downloadResourceToTempFile(未知来源) 在 com.sun.deploy.cache.Cache.downloadResourceToCache(未知来源) 在 com.sun.deploy.net.DownloadEngine.actionDownload(未知来源) 在 com.sun.deploy.net.DownloadEngine.getCacheEntry(未知来源) 在 com.sun.deploy.net.DownloadEngine.getCacheEntry(未知来源) 在 com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(未知来源) 在 com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(未知来源) 在 com.sun.deploy.net.DownloadEngine.getResource(未知来源) 在 com.sun.javaws.LaunchDownload$DownloadTask.call(未知来源) 在 java.util.concurrent.FutureTask$Sync.innerRun(未知来源) 在 java.util.concurrent.FutureTask.run(未知来源) 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(未知来源) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(未知来源) 在 java.lang.Thread.run(Unknown Source)
我的 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>
【问题讨论】:
-
除非我们知道
pluginfile.php做了什么,以及它到底有什么作用,否则真的帮不上什么忙。Content-Type是什么?你是用ASCII模式写出来的吗?我不太了解 Moodle,但是 - 为什么它不能有扩展?
标签: jnlp java-web-start