使用Java Web Start时找不到文件

时间:2016-08-31 10:28:34

标签: java java-web-start jnlp

我正在尝试使用Java Web Start替换Java小程序,但每次我直接从Web服务器或直接从我的计算机运行.jnlp文件时都会出错。

我看到Java Web Start初始屏幕,然后出现默认进度条。它下载,然后验证我的jar,但不久之后出现以下错误消息“无法启动应用程序”。

CouldNotLoadArgumentException[ Could not load file/URL specified: C:\Users\[username]\AppData\Local\Temp\tmp_cache9015150161909242571.tmp]
    at com.sun.javaws.Main.launchApp(Unknown Source)
    at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
    at com.sun.javaws.Main.access$000(Unknown Source)
    at com.sun.javaws.Main$1.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.io.FileNotFoundException: C:\Users\[username]\AppData\Local\Temp\tmp_cache9015150161909242571.tmp (The system cannot find the file specified)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at com.sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source)
    at com.sun.javaws.Main.launchApp(Unknown Source)
    at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
    at com.sun.javaws.Main.access$000(Unknown Source)
    at com.sun.javaws.Main$1.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

我在Temp文件夹中看不到任何类似于tmp_cache的文件。

这是我的JNLP文件:

<?xml version="1.0" encoding="utf-8"?>

<jnlp spec="1.0+"
    codebase="http://localhost:2020/MyServer/applets"
    href="basicTest.jnlp">
    <information>
        <title>JWS Test</title>
        <vendor>My Company</vendor>
    </information>

    <resources>
        <j2se version="1.7+"
            href="http://java.sun.com/products/autodl/j2se"/>
        <jar href="basicTest.jar" main="true" />
    </resources>

    <application-desc
        name="Test Name"
        main-class="main.Entry">
    </application-desc>
    <update check="background"/>
</jnlp>

我尝试过的事情:

  • 从我的Web服务器下载JNLP文件和JAR(按预期工作)
  • 使用一个全新的,简单的jar,只有一个main方法和一个System.out.print()语句(相同的结果)
  • 更改.jnlp文件中的href(不同的错误消息,找不到.jar,正如预期的那样。我的服务器日志正确显示为404)
  • 更改main-class属性的值(相同的结果,表明JVM永远不会启动)
  • 从Sun运行其他example apps(这些工作正常,无论是在浏览器中运行还是在运行下载的.jnlp文件时)
  • 清除我的java缓存和临时文件(相同结果)

我确实想知道未完全签名的罐子是否重要(我的罐子在开发过程中目前是自签名的)但在这种情况下我会发现不同的错误。

好像将jar文件下载到一个位置并进行验证,但是当JVM尝试启动它时无法找到。可能存在缓存位置冲突吗?

1 个答案:

答案 0 :(得分:0)

其中一个原因可能是JRE 7起安全性很高。需要签名。