Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不断获得;JNLPSigningException[未能验证启动文件的签名]”;启动由模板签名的JNLP时_Java_Oracle_Jnlp - Fatal编程技术网

Java 不断获得;JNLPSigningException[未能验证启动文件的签名]”;启动由模板签名的JNLP时

Java 不断获得;JNLPSigningException[未能验证启动文件的签名]”;启动由模板签名的JNLP时,java,oracle,jnlp,Java,Oracle,Jnlp,我们决定按照oracle指南对JNLP文件进行签名。因为我们有不同的JNLP,所以我们采用了第二种方法(使用JNLP模板对JAR文件进行签名) 以下是我们提取到模板中的代码: <?xml version="1.0" encoding="UTF-8"?> <jnlp spec="1.0+" codebase="*" href="*"> <information> <title>*</title> <vendor&

我们决定按照oracle指南对JNLP文件进行签名。因为我们有不同的JNLP,所以我们采用了第二种方法(使用JNLP模板对JAR文件进行签名)

以下是我们提取到模板中的代码:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="*" href="*">
  <information>
    <title>*</title>
    <vendor>My vendor</vendor>
    <description>My description</description>
    <icon href="splash.jpg" kind="splash" width="700" height="400" size="115258"/>
    <offline-allowed />
    <shortcut>
      <menu submenu="My submenu"/>
    </shortcut>
  </information>

  <security>
    <all-permissions/>
  </security>

  <resources locale="en es ja">
    <j2se version="1.6+" initial-heap-size="128m" max-heap-size="384m" href="http://java.sun.com/products/autodl/j2se"/>
    <jar href="myjar.jar" main="true" download="lazy" part="core" size="*"/>
    <jar href="lib/commons-lang-2.6.jar" download="lazy" part="commons" size="297085"/>
    ...
    <jar href="lib/trident-6.0.jar" download="lazy" part="core" size="114496"/>
    <property name="jnlp.myProperty" value="*"/>
    <property name="log4j.configuration" value="*"/>
  </resources>

  <application-desc main-class="com.mycom.myapp.MyClass">
  </application-desc>
</jnlp>

*
我的卖主
我的描述
...
。。。下面是我们实际使用的JNLP之一:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://mylocation.mycom.com/jnlp/myapp/" href="myapp.jnlp">
  <information>
    <title>My App - Production version</title>
    <vendor>My vendor</vendor>
    <description>My description</description>
    <icon href="splash.jpg" kind="splash" width="700" height="400" size="115258"/>
    <offline-allowed />
    <shortcut>
      <menu submenu="My submenu"/>
    </shortcut>
  </information>

  <security>
    <all-permissions/>
  </security>

  <resources locale="en es ja">
    <j2se version="1.6+" initial-heap-size="128m" max-heap-size="384m" href="http://java.sun.com/products/autodl/j2se"/>
    <jar href="myjar.jar" main="true" download="lazy" part="core" size="4189501"/>
    <jar href="lib/commons-lang-2.6.jar" download="lazy" part="commons" size="297085"/>
    ...
    <jar href="lib/trident-6.0.jar" download="lazy" part="core" size="114496"/>
    <property name="jnlp.myProperty" value="http://mylocation.mycom.com/jnlp/myapp/MyApp.properties"/>
    <property name="log4j.configuration" value="http://mylocation.mycom.com/jnlp/myapp/log4j.xml"/>
  </resources>

  <application-desc main-class="com.mycom.myapp.MyClass">
  </application-desc>
</jnlp>

我的应用程序-生产版
我的卖主
我的描述
...
请注意,我使用通配符(
*
)用于:

  • 标记jnlp中的codebase属性
  • 标签jnlp中的href属性
  • 标题标签内的内容
  • jar标记中的属性大小
  • 这两个属性的值
  • 我将模板放在适当的
    JNLP-INF
    文件夹中(也有适当的名称),然后我们在JAR上签名。但是,我们不断收到一个带有以下消息的
    JNLPSigningException

    无法验证启动文件的签名。签名版本与下载的版本不匹配


    有人知道我遗漏了什么吗?

    我相信它对标签中的通配符不满意。 我遇到了这种情况。 出于测试目的,我删除了通配符并阻塞了其他值。
    工作正常——但这是不可接受的解决方案,因为这是该属性的全部要点

    我也遇到了同样的问题,但事实证明,签名的
    .jar
    文件(用作签名的JNLP文件)中包含的
    src/JNLP-INF/APPLICATION.JNLP
    文件与
    中定义的web应用程序中使用的
    APPLICATION.JNLP
    文件不同
    我在Java 1.7.0上遇到了这个问题,在一次自签名战争中,解决方案是在没有jnlp的情况下删除属性。前缀在您的情况下,请尝试删除:

    <property name="log4j.configuration" value="http://mylocation.mycom.com/jnlp/myapp/log4j.xml"/>
    
    
    
    作为一个调试技巧,我发现从命令行运行javaws-verbose和jnlp文件的url可以在控制台选项卡中提供额外的详细信息。

    谢谢。我会尝试,但是,正如你所说,它失去了意义,因为我需要在配置中保持灵活性。我想知道您是否使用了一个或多个通配符,原因与我使用我的相同。。。也许在解析模板时,一些通配符匹配正常,但其他通配符刚好不匹配。我的雁行追逐暂时愉快地结束了。我最初的问题是无法在JNLP中获取属性集。我沿着签名jar的道路前进,创建了愚蠢的JNLP模板。这是一条死胡同——因为显然,通配符在属性中不起作用。我废弃了模板,返回到原始的JNLP文件,将属性名称更改为“JNLP.”前缀,并更改代码以读取这些属性。这对我来说很有效。对于那些正在寻找的人来说,似乎不支持属性值中的通配符,即使是jnlp。前缀我不确定Oracle计划如何允许开发人员安全地向应用程序传递动态参数。它快把我逼疯了!