GVKun编程网logo

在Java Webstart应用程序中从Jar获取资源(java从jar包中获取文件)

2

对于想了解在JavaWebstart应用程序中从Jar获取资源的读者,本文将提供新的信息,我们将详细介绍java从jar包中获取文件,并且为您提供关于32位Windows7上的Java7–JavaWe

对于想了解在Java Webstart应用程序中从Jar获取资源的读者,本文将提供新的信息,我们将详细介绍java从jar包中获取文件,并且为您提供关于32位Windows 7上的Java 7 – Java Webstart – 无法加载资源、Java 7 update 25使我们的Java Web Start应用程序失败且没有日志记录、Java Web Start / JNLP应用程序的jar文件在哪里缓存?、Java Webstart在启动应用程序之前停止的有价值信息。

本文目录一览:

在Java Webstart应用程序中从Jar获取资源(java从jar包中获取文件)

在Java Webstart应用程序中从Jar获取资源(java从jar包中获取文件)

我正在尝试在Java Webstart应用程序中加载许多资源。

我最初尝试使用以下命令加载这些文件:

ClassLoader loader = MyClass.class.getClassLoader();
URL url = loader.getResource("resourceName");
File file = new File(url.toURI());

但这没有用-它引发了IllegalArgumentException。进一步的研究表明,该方法不适用于从jar文件访问资源,因此我需要使用以下方法:

ClassLoader loader = MyClass.class.getClassLoader();
InputStream in = loader.getResourceAsStream("resourceName");

但是,当我从Jnlp使用它运行时,得到奇怪的结果。如果我运行以下命令:

public static void main(String[] args) throws IOException,URISyntaxException {
  ClassLoader loader = MyClass.class.getClassLoader();
  String r = "resourceName";
  URL url = loader.getResource(r);
  System.out.println(url!=null);
  InputStream in = loader.getResourceAsStream(r);
  System.out.println(in!=null);
}

在我的IDE中,我得到了对与错(正如我期望的那样)。从jnlp运行,URL为true,但InputStream为false。

关于我可能做错了什么的任何想法?是否有更好的方式来装载资源以供Java Webstart应用程序使用?

编辑:有关信息,我的资源位于MyProject / src / main / resources中,并且在生成jar时,资源位于jar根目录中。

32位Windows 7上的Java 7 – Java Webstart – 无法加载资源

32位Windows 7上的Java 7 – Java Webstart – 无法加载资源

32位Windows 7上的Java 7 – Java Webstart – 无法加载资源

我无法在32位Windows 7系统上启动任何java webstart应用程序.
例如. ArgoUML – http://argouml-downloads.tigris.org/jws/argouml-latest-stable.jnlp
使用Java 6,一切正常,但是使用Java 7,我遇到了这样的错误:

Unable to load resource: java.io.IOException: Error writing to
server
or java.net.socketException: Connection reset

Java version:
Java Web Start 10.7.2.11
Using JRE version 1.7.0_07-b11 Java HotSpot(TM) Client VM

这是跟踪日志:

    Log started: pe,21 syys 2012 21:04:19 +0300
    basic: Java part started
    basic: jnlpx.jvm: C:\Program Files\Java\jre7\bin\javaw.exe
    basic: jnlpx.splashport: 52540
    basic: jnlpx.remove: true
    basic: jnlpx.heapsize: NULL,512m
    network: Loading user-defined proxy configuration ...
    network: Done.
    network: browser is ChromeHTML
    network: browser is IE
    network: Loading proxy configuration from Internet Explorer ...
    network: Done.
    network: Loading direct proxy configuration ...
    network: Done.
    network: Proxy Configuration: No proxy
    security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.org.apache.xerces.internal.utils.,com.sun.org.apache.xalan.internal.utils.
    security: property package.access new value sun.,com.sun.org.apache.xalan.internal.utils.,com.sun.javaws
    security: property package.access value sun.,com.sun.javaws
    security: property package.access new value sun.,com.sun.javaws,com.sun.deploy
    security: property package.access value sun.,com.sun.deploy
    security: property package.access new value sun.,com.sun.deploy,com.sun.jnlp
    security: property package.deFinition value sun.,com.sun.org.apache.xalan.internal.utils.
    security: property package.deFinition new value sun.,com.sun.javaws
    security: property package.deFinition value sun.,com.sun.javaws
    security: property package.deFinition new value sun.,com.sun.deploy
    security: property package.deFinition value sun.,com.sun.deploy
    security: property package.deFinition new value sun.,com.sun.jnlp
    security: property package.access value sun.,com.sun.jnlp
    security: property package.access new value sun.,com.sun.jnlp,org.mozilla.jss
    security: property package.deFinition value sun.,com.sun.jnlp
    security: property package.deFinition new value sun.,org.mozilla.jss
    basic: Running JVMParams: [JVMParameters: isSecure: true,args: -Xmx512m]
        -> [JVMParameters: isSecure: true,args: -Xmx512m]
    network: Created version ID: 1.7.0.07
    network: Created version ID: 1.7
    network: Created version ID: 2.2.1
    temp: new XMLParser with source:
    temp: <?xml version="1.0" encoding="utf-8"?>
    <!-- JNLP File for launching ArgoUML with WebStart -->
    <jnlp
      spec="1.0+"
      codebase="http://argouml-downloads.tigris.org/maven2"
      href="http://argouml-downloads.tigris.org/jws/argouml-latest-stable.jnlp">
      <information>
        <title>ArgoUML Latest Stable Release 0.34</title>
        <vendor>Tigris.org (Open Source)</vendor>
        <homepage href="http://argouml.tigris.org/"/>
        <description>ArgoUML application.
                     This is the latest stable release.
        </description>
        <description kind="short">ArgoUML 0.34</description>
        <icon href="http://argouml.tigris.org/images/argologo16x16.gif" width="16" height="16" />
        <icon href="http://argouml.tigris.org/images/argologo32x32.gif" width="32" height="32" />
        <icon href="http://argouml.tigris.org/images/argologo64x64.gif" width="64" height="64" />
        <offline-allowed/>
      </information>
      <security>
        <all-permissions/>
      </security>
      <resources>
        <j2se version="1.6+" max-heap-size="512m"/>

        <jar href="http://argouml-downloads.tigris.org/maven2/antlr/antlr/2.7.7-3/antlr-2.7.7-3.jar"/>
        ....
        <property name="argouml.modules"
          value=";org.argouml.state2.StateDiagramModule;org.argouml.sequence2.SequenceDiagramModule;org.argouml.activity2.ActivityDiagramModule;org.argouml.core.propertypanels.module.XmlPropertyPanelsModule;org.argouml.transformer.TransformerModule;org.argouml.language.cpp.generator.ModuleCpp;org.argouml.language.cpp.notation.NotationModuleCpp;org.argouml.language.cpp.profile.ProfileModule;org.argouml.language.cpp.reveng.CppImport;org.argouml.language.cpp.ui.SettingsTabCpp;org.argouml.language.csharp.generator.GeneratorCSharp;org.argouml.language.java.cognitive.critics.InitJavaCritics;org.argouml.language.java.generator.GeneratorJava;org.argouml.language.java.profile.ProfileJava;org.argouml.language.java.reveng.Javaimport;org.argouml.language.java.reveng.classfile.ClassfileImport;org.argouml.language.java.ui.JavaTools;org.argouml.language.java.ui.SettingsTabJava;org.argouml.language.PHP.generator.ModulePHP4;org.argouml.language.PHP.generator.ModulePHP5;org.argouml.language.sql.sqlInit;org.argouml.uml.reveng.classfile.ClassfileImport;org.argouml.uml.reveng.idl.IDLFileImport"    />
      </resources>
      <application-desc main-/>
    </jnlp>

    temp: 

    returning ROOT as follows:

    <jnlp spec="1.0+" codebase="http://argouml-downloads.tigris.org/maven2" href="http://argouml-downloads.tigris.org/jws/argouml-latest-stable.jnlp">
      <information>
        <title>ArgoUML Latest Stable Release 0.34</title>
        <vendor>Tigris.org (Open Source)</vendor>
        <homepage href="http://argouml.tigris.org/"/>
        <description>ArgoUML application.
                     This is the latest stable release.
        </description>
        <description kind="short">ArgoUML 0.34</description>
        <icon href="http://argouml.tigris.org/images/argologo16x16.gif" width="16" height="16"/>
        <icon href="http://argouml.tigris.org/images/argologo32x32.gif" width="32" height="32"/>
        <icon href="http://argouml.tigris.org/images/argologo64x64.gif" width="64" height="64"/>
        <offline-allowed/>
      </information>
      <security>
        <all-permissions/>
      </security>
      <resources>
        <j2se version="1.6+" max-heap-size="512m"/>
        <jar href="http://argouml-downloads.tigris.org/maven2/antlr/antlr/2.7.7-3/antlr-2.7.7-3.jar"/>...
        <property name="argouml.modules" value=";org.argouml.state2.StateDiagramModule;org.argouml.sequence2.SequenceDiagramModule;org.argouml.activity2.ActivityDiagramModule;org.argouml.core.propertypanels.module.XmlPropertyPanelsModule;org.argouml.transformer.TransformerModule;org.argouml.language.cpp.generator.ModuleCpp;org.argouml.language.cpp.notation.NotationModuleCpp;org.argouml.language.cpp.profile.ProfileModule;org.argouml.language.cpp.reveng.CppImport;org.argouml.language.cpp.ui.SettingsTabCpp;org.argouml.language.csharp.generator.GeneratorCSharp;org.argouml.language.java.cognitive.critics.InitJavaCritics;org.argouml.language.java.generator.GeneratorJava;org.argouml.language.java.profile.ProfileJava;org.argouml.language.java.reveng.Javaimport;org.argouml.language.java.reveng.classfile.ClassfileImport;org.argouml.language.java.ui.JavaTools;org.argouml.language.java.ui.SettingsTabJava;org.argouml.language.PHP.generator.ModulePHP4;org.argouml.language.PHP.generator.ModulePHP5;org.argouml.language.sql.sqlInit;org.argouml.uml.reveng.classfile.ClassfileImport;org.argouml.uml.reveng.idl.IDLFileImport"/>
      </resources>
      <application-desc main-/>
    </jnlp>
    temp: returning launchdesc from XMLFormat.parse():

    <jnlp spec="1.0+" codebase="http://argouml-downloads.tigris.org/maven2/" href="http://argouml-downloads.tigris.org/jws/argouml-latest-stable.jnlp">
      <information>
        <title>ArgoUML Latest Stable Release 0.34</title>
        <vendor>Tigris.org (Open Source)</vendor>
        <homepage href="http://argouml.tigris.org/"/>
        <description>ArgoUML application.
                     This is the latest stable release.
        </description>
        <description kind="short">ArgoUML 0.34</description>
        <icon href="http://argouml.tigris.org/images/argologo16x16.gif" height="16" width="16" kind="default"/>
        <icon href="http://argouml.tigris.org/images/argologo32x32.gif" height="32" width="32" kind="default"/>
        <icon href="http://argouml.tigris.org/images/argologo64x64.gif" height="64" width="64" kind="default"/>
        <offline-allowed/>
      </information>
      <security>
        <all-permissions/>
      </security>
      <update check="timeout" policy="always"/>
      <resources>
        <java max-heap-size="536870912" version="1.6+"/>
        <jar href="http://argouml-downloads.tigris.org/maven2/antlr/antlr/2.7.7-3/antlr-2.7.7-3.jar" download="eager" main="false"/>
        ...
        <property name="argouml.modules" value=";org.argouml.state2.StateDiagramModule;org.argouml.sequence2.SequenceDiagramModule;org.argouml.activity2.ActivityDiagramModule;org.argouml.core.propertypanels.module.XmlPropertyPanelsModule;org.argouml.transformer.TransformerModule;org.argouml.language.cpp.generator.ModuleCpp;org.argouml.language.cpp.notation.NotationModuleCpp;org.argouml.language.cpp.profile.ProfileModule;org.argouml.language.cpp.reveng.CppImport;org.argouml.language.cpp.ui.SettingsTabCpp;org.argouml.language.csharp.generator.GeneratorCSharp;org.argouml.language.java.cognitive.critics.InitJavaCritics;org.argouml.language.java.generator.GeneratorJava;org.argouml.language.java.profile.ProfileJava;org.argouml.language.java.reveng.Javaimport;org.argouml.language.java.reveng.classfile.ClassfileImport;org.argouml.language.java.ui.JavaTools;org.argouml.language.java.ui.SettingsTabJava;org.argouml.language.PHP.generator.ModulePHP4;org.argouml.language.PHP.generator.ModulePHP5;org.argouml.language.sql.sqlInit;org.argouml.uml.reveng.classfile.ClassfileImport;org.argouml.uml.reveng.idl.IDLFileImport"/>
      </resources>
      <application-desc main-/>
    </jnlp>
    basic: new Launcher: 
    <jnlp spec="1.0+" codebase="http://argouml-downloads.tigris.org/maven2/" href="http://argouml-downloads.tigris.org/jws/argouml-latest-stable.jnlp">
      <information>
        <title>ArgoUML Latest Stable Release 0.34</title>
        <vendor>Tigris.org (Open Source)</vendor>
        <homepage href="http://argouml.tigris.org/"/>
        <description>ArgoUML application.
                     This is the latest stable release.
        </description>
        <description kind="short">ArgoUML 0.34</description>
        <icon href="http://argouml.tigris.org/images/argologo16x16.gif" height="16" width="16" kind="default"/>
        <icon href="http://argouml.tigris.org/images/argologo32x32.gif" height="32" width="32" kind="default"/>
        <icon href="http://argouml.tigris.org/images/argologo64x64.gif" height="64" width="64" kind="default"/>
        <offline-allowed/>
      </information>
      <security>
        <all-permissions/>
      </security>
      <update check="timeout" policy="always"/>
      <resources>
        <java max-heap-size="536870912" version="1.6+"/>
        <jar href="http://argouml-downloads.tigris.org/maven2/antlr/antlr/2.7.7-3/antlr-2.7.7-3.jar" download="eager" main="false"/>
        ....
        <property name="argouml.modules" value=";org.argouml.state2.StateDiagramModule;org.argouml.sequence2.SequenceDiagramModule;org.argouml.activity2.ActivityDiagramModule;org.argouml.core.propertypanels.module.XmlPropertyPanelsModule;org.argouml.transformer.TransformerModule;org.argouml.language.cpp.generator.ModuleCpp;org.argouml.language.cpp.notation.NotationModuleCpp;org.argouml.language.cpp.profile.ProfileModule;org.argouml.language.cpp.reveng.CppImport;org.argouml.language.cpp.ui.SettingsTabCpp;org.argouml.language.csharp.generator.GeneratorCSharp;org.argouml.language.java.cognitive.critics.InitJavaCritics;org.argouml.language.java.generator.GeneratorJava;org.argouml.language.java.profile.ProfileJava;org.argouml.language.java.reveng.Javaimport;org.argouml.language.java.reveng.classfile.ClassfileImport;org.argouml.language.java.ui.JavaTools;org.argouml.language.java.ui.SettingsTabJava;org.argouml.language.PHP.generator.ModulePHP4;org.argouml.language.PHP.generator.ModulePHP5;org.argouml.language.sql.sqlInit;org.argouml.uml.reveng.classfile.ClassfileImport;org.argouml.uml.reveng.idl.IDLFileImport"/>
      </resources>
      <application-desc main-/>
    </jnlp>
    network: preparetoLaunch: offlineOnly=false
    network: Cache entry not found [url: http://argouml-downloads.tigris.org/jws/argouml-latest-stable.jnlp,version: null]
    network: Cache entry not found [url: http://argouml-downloads.tigris.org/jws/argouml-latest-stable.jnlp,version: null]
    network: Connecting http://argouml-downloads.tigris.org/jws/argouml-latest-stable.jnlp with proxy=DIRECT
    network: Connecting socket://argouml-downloads.tigris.org:80 with proxy=DIRECT
    network: Connecting socket://argouml-downloads.tigris.org:80 with proxy=DIRECT
    java.io.IOException: Error writing to server
        at sun.net.www.protocol.http.HttpURLConnection.writeRequests(UnkNown Source)
        at sun.net.www.protocol.http.HttpURLConnection.writeRequests(UnkNown Source)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(UnkNown Source)
        at java.net.HttpURLConnection.getResponseCode(UnkNown Source)
        at com.sun.deploy.net.BasicHttpRequest.doRequest(UnkNown Source)
        at com.sun.deploy.net.BasicHttpRequest.doGetRequestEX(UnkNown Source)
        at com.sun.deploy.net.DownloadEngine.actionDownload(UnkNown Source)
        at com.sun.deploy.net.DownloadEngine._downloadCacheEntry(UnkNown Source)
        at com.sun.deploy.cache.ResourceProviderImpl.getResourceCacheEntry(UnkNown Source)
        at com.sun.deploy.cache.ResourceProviderImpl.getResourceCacheEntry(UnkNown Source)
        at com.sun.deploy.cache.ResourceProviderImpl.getResource(UnkNown Source)
        at com.sun.javaws.Launcher.updateFinallaunchdesc(UnkNown Source)
        at com.sun.javaws.Launcher.preparetoLaunch(UnkNown Source)
        at com.sun.javaws.Launcher.preparetoLaunch(UnkNown Source)
        at com.sun.javaws.Launcher.launch(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)
    network: Connecting http://argouml-downloads.tigris.org/jws/argouml-latest-stable.jnlp with proxy=DIRECT
    network: Connecting socket://argouml-downloads.tigris.org:80 with proxy=DIRECT
    network: Connecting socket://argouml-downloads.tigris.org:80 with proxy=DIRECT
    java.net.socketException: Connection reset
        at java.net.socketInputStream.read(UnkNown Source)
        at java.net.socketInputStream.read(UnkNown Source)
        at java.io.BufferedInputStream.fill(UnkNown Source)
        at java.io.BufferedInputStream.read1(UnkNown Source)
        at java.io.BufferedInputStream.read(UnkNown Source)
        at sun.net.www.http.HttpClient.parseHTTPHeader(UnkNown Source)
        at sun.net.www.http.HttpClient.parseHTTP(UnkNown Source)
        at sun.net.www.http.HttpClient.parseHTTP(UnkNown Source)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(UnkNown Source)
        at java.net.HttpURLConnection.getResponseCode(UnkNown Source)
        at com.sun.deploy.net.BasicHttpRequest.doRequest(UnkNown Source)
        at com.sun.deploy.net.BasicHttpRequest.doRequest(UnkNown Source)
        at com.sun.deploy.net.BasicHttpRequest.doGetRequest(UnkNown Source)
        at com.sun.deploy.net.DownloadEngine.actionDownload(UnkNown Source)
        at com.sun.deploy.net.DownloadEngine._downloadCacheEntry(UnkNown Source)
        at com.sun.deploy.cache.ResourceProviderImpl.getResourceCacheEntry(UnkNown Source)
        at com.sun.deploy.cache.ResourceProviderImpl.getResourceCacheEntry(UnkNown Source)
        at com.sun.deploy.cache.ResourceProviderImpl.getResource(UnkNown Source)
        at com.sun.javaws.Launcher.updateFinallaunchdesc(UnkNown Source)
        at com.sun.javaws.Launcher.preparetoLaunch(UnkNown Source)
        at com.sun.javaws.Launcher.preparetoLaunch(UnkNown Source)
        at com.sun.javaws.Launcher.launch(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)
    preloader: Construct preloader delegate
    network: Connecting socket://127.0.0.1:52540 with proxy=DIRECT
    #### Java Web Start Error:
    #### Unable to load resource: http://argouml-downloads.tigris.org/jws/argouml-latest-stable.jnlp
问题似乎出现在Windows环境中的Java 7 IPv6中.
解决方案是添加:

< j2se version =“1.6.10”href =“http://java.sun.com/products/autodl/j2se”
java的VM-ARGS = “ – Djava.net.preferIPv4Stack =真”/>

(我还手动将java.exe和javaws.exe添加到Windows防火墙和F-Secure中的例外列表中.)

感谢Richard Conway:http://grokkingis.blogspot.fi/2012/08/work-arounds-windows-firewall-blocking.html?showComment=1349808752760#c2225417445483685032

Java 7 update 25使我们的Java Web Start应用程序失败且没有日志记录

Java 7 update 25使我们的Java Web Start应用程序失败且没有日志记录

自Oracle启动Java 7 Update 25以来,我们的应用程序不再起作用。

最初,我们收到了一些有关Manifest文件中缺少代码库和安全性标签的警告,我们已对其进行了修复。

我们现在遇到的问题是,在控制台中,我们仅获得以下几行:

#### Java Web Start Error:#### null

我们还会收到带有错误消息的应用程序错误对话框: 无法启动应用程序

详细信息按钮在例外中提供以下详细信息:

java.lang.NullPointerException    at com.sun.jnlp.JNLPClassLoader.getPermissions(Unknown Source)    at java.security.SecureClassLoader.getProtectionDomain(SecureClassLoader.java:206)    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)    at java.security.AccessController.doPrivileged(Native Method)    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)    at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)    at desktop.DesktopProxySelector.<init>(DesktopProxySelector.java:24)     <- code smippet below    at desktop.Main.main(Main.java:139)                                      <- code smippet below    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)    at java.lang.reflect.Method.invoke(Method.java:606)    at com.sun.javaws.Launcher.executeApplication(Unknown Source)    at com.sun.javaws.Launcher.executeMainClass(Unknown Source)    at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)    at com.sun.javaws.Launcher.run(Unknown Source)    at java.lang.Thread.run(Thread.java:724)

相关代码部分为:

Desktop.Main.main/** * Main method, starts the application */public static void main(String[] args) {    System.setProperty("java.net.useSystemProxies", "true");    //Logger.getLogger("httpclient.wire.header.level").setLevel(Level.FINEST);    //Logger.getLogger("org.apache.commons.httpclient.level").setLevel(Level.FINEST);    java.net.ProxySelector.setDefault(new DesktopProxySelector(java.net.ProxySelector.getDefault()));

(最后一行是行号139)

desktop.DesktopProxySelector:public class DesktopProxySelector extends ProxySelector {    public  DesktopProxySelector(ProxySelector defaultSelector) {    URI httpsUri = new CentralConfigurationService().getCentralLocation();

(最后一行是发生异常的第24行)

有人可以给我们一些线索提示(或更好的解决方案)来说明由此“次要”更新引起的Java新行为。

当我们使用java -jar Desktop.jar从cli直接运行该应用程序时,该应用程序将运行文件,因此该问题显然与Java Web
Start中的更改有关。

@trashgod:该错误显然与7u25中的Permissions更改有关,因为NullPointerException发生在com.sun.jnlp.JNLPClassLoader.getPermissions中。

只是为了解释我的想法(我是Wouter的同事):desktop.Main实例化一个desktop.DesktopProxySelector(我们的类),desktop.DesktopProxySelector实例化desktop.configuration.CentralConfigurationService
desktop.configuration.CentralConfigurationService实例化一个java.net.URI 。

在实例化CentralConfigurationService的DesktopProxySelector初始化的第一行,由JNLPClassLoader调用的getPermissions方法抛出NullPointerException。因此,通过java
webstart加载CentralConfigurationService类并获得该类的权限时出了点问题。可能与URI类实例化(这需要额外的权限(已建立到远程uri的连接))有关吗?

答案1

小编典典

最终问题解决了。该问题是由于MANIFEST.MF主文件中包含的jar文件与launch.jnlp中提到的jar文件之间的不匹配引起的。

显然,现在要求所有将要使用的jar文件也必须存在于launch.jnlp文件中。

(过去决定手动将此文件保存在接收器中,显然,该文件并不总是以适当的方式进行维护。现在,此过程是自动化的,因此问题不再发生在我们身上。)

Java Web Start / JNLP应用程序的jar文件在哪里缓存?

Java Web Start / JNLP应用程序的jar文件在哪里缓存?

Java Web Start / JNLP应用程序的jar文件在哪里缓存?

Java Webstart在启动应用程序之前停止

Java Webstart在启动应用程序之前停止

我们的webstart应用程序(不是applet)遇到了奇怪的启动问题.

启动应用程序会显示应用程序启动屏幕,但javaws进程会在对话框,java控制台或日志文件中没有显示任何错误消息后立即终止.似乎javaws在实际启动实际应用程序之前就停止了.
用户是否尝试从桌面快捷方式或从网页启动应用程序无关紧要.
在没有webstart的本地计算机上使用javaw运行时,相同的应用程序没有任何问题.

应用程序是签名应用程序(真实证书,而不是自签名应用程序),用户可以在桌面上使用应用程序的快捷方式. jnlp定义应用程序可以脱机运行,并且使用timeout -option进行update-check.服务器端使用jnl-servlet来提供正确的jar版本.

这个问题并不是每次都会发生,但如果启动失败就像这样一次,很可能(我们已经观察到大约90%的确定性)后续启动也会失败.重新启动计算机似乎没有帮助.该问题仅限于少数计算机.大多数用户(98%)没有这个问题.

所有失败的系统都在运行Windows 7 Pro. Java版本可能会有所不同,但一个例子是64位Java 1.8.0_60,Win7Pro,64位intel-i3处理器.

造成这类问题的原因是什么?任何有关解决问题的帮助都非常感谢.特别是因为似乎没有任何错误消息可用于帮助查明问题.

解决方法

我有1.8.0_60的问题,当在JNLP文件的doctype中引用每个URL时,似乎强制DTD验证. Webstart尝试下载DTD,没有互联网连接,应用程序无法启动.这在1.8.0_51中不是问题.

作为解决方法,我们从JNLP中删除了doctype.

<!DOCTYPE jnlp PUBLIC "-//Sun Microsystems,Inc//DTD JNLP Descriptor 6.0//EN" "http://java.sun.com/dtd/JNLP-6.0.dtd">

今天的关于在Java Webstart应用程序中从Jar获取资源java从jar包中获取文件的分享已经结束,谢谢您的关注,如果想了解更多关于32位Windows 7上的Java 7 – Java Webstart – 无法加载资源、Java 7 update 25使我们的Java Web Start应用程序失败且没有日志记录、Java Web Start / JNLP应用程序的jar文件在哪里缓存?、Java Webstart在启动应用程序之前停止的相关知识,请在本站进行查询。

本文标签: