首页 文章

如何从JNLP资源标记中以* .jar结尾的资源加载JAR?

提问于
浏览
0

我想用Java Web Start运行一个JAR文件 . 不幸的是,我必须动态加载JAR文件(它存储在Moodle中) . 因此,指向JAR文件的链接不会以“.jar”结尾 . 它实际上是对PHP脚本的调用,它动态加载JAR文件 . 如果我用浏览器打开链接,则会下载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中java.lang.Thread.run上的$ Worker.run(未知来源)(未知来源)

和封装的异常:

java.io.IOException:com.sun.deploy.cache上的com.sun.deploy.net.HttpDownloadHelper.download(未知来源)的com文件位于com.sun.deploy.cache的com.sun.deploy.cache.Cache.downloadResourceToTempFile(未知来源) .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 (未知来源)at com.sun.javaws.LaunchDownload $ DownloadTask.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(Unknown Source)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source)at at 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>

1 回答

  • 1

    谢谢@Amadan!

    Java Web Start实际上可以从不以“.jar”结尾的资源加载JAR . 只需要设置适当的内容类型:

    Content-type: application/java-archive
    

    然后它完美地工作:-)

相关问题