我的 java Web 启动应用程序仅在设置详细时启动

My java web start application only starts when verbose is set

我有一个 java 网络启动应用程序,我尝试通过

启动
javaws.exe https://localhost:8888/myApplication/myApplication.jnlp

没有任何反应(没有错误消息;我在任务列表中看到没有进程启动)。

如果我通过

启动它
javaws.exe -verbose https://localhost:8888/myApplication/myApplication.jnlp

应用程序启动。

我也可以在使用时启动应用程序

javaws.exe -viewer https://localhost:8888/myApplication/myApplication.jnlp

然后从 java 缓存查看器.

启动应用程序

有什么区别,在详细模式下或通过查看器可能会触发应用程序 运行?这是我的 jnlp 文件:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="https://localhost:8888/myApplication" href="myApplication.jnlp">
    <information>
        ....
    </information>
    <security>
        <all-permissions/>
    </security>
    <resources>
        <j2se version="1.8.0_60+"         href="http://java.sun.com/products/autodl/j2se"          max-heap-size="500m" initial-heap-size="250m"/>
        <!-- some jars are referenced -->
        <property name="sun.java2d.d3d" value="false" />
    </resources>
    <resources os="Windows">
        <nativelib href="mylib.jar" download="eager" />
    </resources>
    <application-desc main-class="myClass">
        <argument>-initLogging</argument>
        <argument>SETPROPERTYjavax.net.ssl.trustStore</argument>
        <argument>_UNDEFINED_</argument>
        <argument>SETPROPERTYjavax.net.ssl.trustStoreType</argument>
        <argument>_UNDEFINED_</argument>
        <argument>SETPROPERTYjavax.net.ssl.trustStorePassword</argument>
        <argument>_UNDEFINED_</argument>
        <argument>-locale</argument>
        <argument>_UNDEFINED_</argument>
        <argument>-serviceHost</argument>
        <argument>_UNDEFINED_</argument>
        <argument>-serviceProtocol</argument>
        <argument>_UNDEFINED_</argument>
        <argument>-servicePort</argument>
        <argument>_UNDEFINED_</argument>
        <argument>-trustStrategy</argument>
        <argument>_UNDEFINED_</argument>
    </application-desc>
</jnlp>

我激活了跟踪和日志输出,发现发生异常:

java.io.FileNotFoundException: C:\ProgramData\Oracle\Java\java.settings.cfg (Das System kann den angegebenen Pfad nicht finden)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(FileInputStream.java:195)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at java.io.FileReader.<init>(FileReader.java:72)
    at com.sun.deploy.config.WinPlatform.readSystemConfig(Unknown Source)
    at com.sun.deploy.config.WinPlatform.getSponsorOffersDisabledSettings(Unknown Source)
    at com.sun.deploy.config.ClientConfig.getSponsorOffersDisabledSettings(Unknown Source)
    at com.sun.deploy.panel.AdvancedProperties.saveSponsorOfferingSettings(Unknown Source)
    at com.sun.deploy.panel.ControlPanel.apply(Unknown Source)
    at com.sun.deploy.panel.ControlPanel.<init>(Unknown Source)
    at com.sun.deploy.panel.ControlPanel.main(Unknown Source)
    at com.sun.javaws.Main.launchJavaControlPanel(Unknown Source)
    at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
    at com.sun.javaws.Main.access[=10=]0(Unknown Source)
    at com.sun.javaws.Main.run(Unknown Source)
    at java.lang.Thread.run(Thread.java:745)

然后我找到了这个页面: https://bugs.openjdk.java.net/browse/JDK-8134475

当我激活 java 浏览器内容时(Java 控制面板 > 安全选项卡 > select 复选框 "Enable content for browser and Web Start application")。 然后应用程序启动了...

但问题是:我不知道为什么!

我也有这个问题(看我的评论

我通过更新 Java 解决了这个问题,即重新安装 Java。文件 C:\ProgramData\Oracle\Java\java.settings.cfg 已重新创建,这个新的 java 安装可以再次正确打开 Web 启动应用程序。虽然旧版本仍然有同样的错误。

使用 Java 9 更新 Java 后,我需要在 Java 控制面板的安全选项卡中 "Enable Applets and Web Start in the browser"。