首页 文章

使用Java Web Start时找不到文件

提问于
浏览
2

我正在尝试使用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 是否重要(我的 jar 在开发过程中目前是自签名的)但在这种情况下我会期待一个不同的错误 .

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

1 回答

  • 0

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

相关问题