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



我想用Java Web Start运行一个JAR文件。不幸的是,我必须动态加载JAR文件(它存储在Moodle中)。因此,到JAR文件的链接不会以". JAR"结尾。它实际上是对动态加载JAR文件的PHP脚本的调用。如果我用浏览器打开链接,就会下载JAR文件。无论如何,Java Web Start不能像那样下载它。我得到以下异常:

com. sun.deployy.net.faileddownloadadeexception:资源链接:http://localhost/moodle22/pluginfile.php/39/mod_assignment/my_filedownloadengine . actiondownload(来源未知)getcacheentry(来源未知)getcacheentry(来源未知)getresourcecacheentry(来源未知)getresourcecacheentry(来源未知)downloadengine . getresource(未知来源)在com.sun.javaws.LaunchDownload DownloadTask美元。调用(未知源)在美元java.util.concurrent.FutureTask同步。innerRun(未知来源)在java.util.concurrent. futurettask .run(来源未知)在java.util.concurrent.ThreadPoolExecutor$Worker.runTask(来源未知)在java.util.concurrent.ThreadPoolExecutor$Worker.run(来源未知)在java.lang.Thread.run(未知来源)

和封装的异常:

. io .IOException:无效jar文件(来源不详)downloadresourcetotempfile(来源未知)downloadresourcetocache(来源未知)downloadengine . actiondownload(来源未知)getcacheentry(来源未知)getcacheentry(来源未知)getresourcecacheentry(来源未知)getresourcecacheentry(来源未知)downloadengine . getresource(未知来源)在com.sun.javaws.LaunchDownload DownloadTask美元。调用(未知源)在美元java.util.concurrent.FutureTask同步。innerRun(未知来源)在java.util.concurrent. futurettask .run(来源未知)在java.util.concurrent.ThreadPoolExecutor$Worker.runTask(来源未知)在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>

谢谢@Amadan!

Java Web Start实际上可以从不以"。jar"结尾的资源中加载jar。只需要设置合适的内容类型:

Content-type: application/java-archive

那么它工作完美:-)

最新更新