Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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 Web Star Java.lang.NullPointerException(JnlpxArgs.execProgram)_Java_Java Web Start_Jnlp - Fatal编程技术网

Java Web Star Java.lang.NullPointerException(JnlpxArgs.execProgram)

Java Web Star Java.lang.NullPointerException(JnlpxArgs.execProgram),java,java-web-start,jnlp,Java,Java Web Start,Jnlp,我有一个由servlet动态生成的JNLP文件。生成的JNLP是: <jnlp spec="6.0+" href="launch?param1=Hooolas"> <information> <title>JSGD</title> <vendor>evconsul</vendor> <homepage href=""/> <des

我有一个由servlet动态生成的JNLP文件。生成的JNLP是:

<jnlp spec="6.0+"  href="launch?param1=Hooolas">
      <information>
        <title>JSGD</title>
        <vendor>evconsul</vendor>
        <homepage href=""/>
        <description>JSGD</description>
        <description kind="short">JSGD</description>
        <offline-allowed/>
      </information>
      <update check="background"/>
      <security>
        <all-permissions/>
      </security>
      <resources>
        <j2se version="1.8+"/>
        <jar href="http://192.168.0.17:8080/Secu/huella/JSGD.jar" main="true"/>
      </resources>
      <application-desc main-class="jsgd.JSGD">
        <argument>Hooolas</argument>
      </application-desc>
    </jnlp>
我将所有库打包在一个名为JSGD.jar的jar中,其结构是:

JSGD.jar
        -jsgd
        -META-INF
        -org
        -SecugenLib
我的jar的URL是:

我已通过Netbeans 8.1打包了我的应用程序 Files->/buil.xml右键单击Run Target->Other Targets->package for store。 这将在存储文件夹中生成一个jar。这个jar具有上面描述的结构

在“我的机器”中,运行正常(当codebase属性为:codebase=”时)http://localhost:8080/Secu/“当然。有什么问题吗? JRE版本1.7.0_79-b15(客户端计算机) 我使用netbeans8.1

详细信息

我已经覆盖了build.xml,添加了下一行;要将所有类打包到一个jar中,请执行以下操作:

    <target name="package-for-store" depends="jar">  
         <!-- Cambien el valor de esta propiedad para dar el nombre al JAR,  
            sin la extensión .jar. No debe tener espacios.  
            <property name="store.jar.name" value="NombreDelJar"/>  
         -->  
         <property name="store.jar.name" value="JSGD"/>  
         <!-- No editar nada después de esta línea -->  
         <property name="store.dir" value="store"/>  
         <property name="store.jar" value="${store.dir}/${store.jar.name}.jar"/>  
         <echo message="Packaging ${application.title} into a single JAR at ${store.jar}"/>  
         <delete dir="${store.dir}"/>  
         <mkdir dir="${store.dir}"/>  
         <jar destfile="${store.dir}/temp_final.jar" filesetmanifest="skip">  
           <zipgroupfileset dir="dist" includes="*.jar"/>  
           <zipgroupfileset dir="dist/lib" includes="*.jar"/>  
 <manifest>  
         <attribute name="Main-Class" value="${main.class}"/>
         <attribute name="Application-Name" value="JSGD"/>
         <attribute name="Trusted-Only" value="true"/>
         <attribute name="Permissions" value="sandbox"/>
         <attribute name="Codebase" 
         value="http://192.168.0.17 http://localhost"/>
      </manifest>  
         </jar>  
         <zip destfile="${store.jar}">  
           <zipfileset src="${store.dir}/temp_final.jar"  
           excludes="META-INF/*.SF, META-INF/*.DSA, META-INF/*.RSA"/>  
         </zip>  
         <delete file="${store.dir}/temp_final.jar"/>  
       </target>
在Java控制面板站点列表中。我添加了以下网站:

http://192.168.0.17:8080
http://192.168.0.17:8080/Secu
http://192.168.0.17:8080/Secu/huella
http://192.168.0.17:8080/Secu/launch
提前谢谢

  • JNLP:
    硬编码的
    codebase=”http://192.168.0.17:8080/Secu/“

    只能在本地主机上工作

  • 导致java被阻止

原因

Java进一步增强了安全性,使用户系统不易受到外部攻击。
从Java 7 Update 51开始,Java不允许用户运行未签名(未签名)、自签名(未经可信机构签名)或缺少权限属性的应用程序。 运行应用程序所涉及的风险 未签名的应用程序

默认情况下,没有证书的应用程序(即未签名的应用程序)或缺少应用程序名称和发布者信息的应用程序将被阻止。运行此类应用程序可能不安全,并且存在更高的风险。 自签名应用程序(证书不是来自受信任的机构)

具有自签名证书的应用程序被阻止

应用程序名称属性

应用程序名称属性用于安全提示中,为已签名的RIA提供标题。建议使用此属性来帮助用户做出信任和运行RIA的决定。该值可以是任何有效字符串,例如:

应用名称:Hello World

如果JAR文件清单中不存在应用程序名属性

修改清单文件

在创建JAR文件期间,可以使用m命令行选项将自定义信息添加到清单中。本节介绍m选项

Jar工具会自动将路径名为META-INF/manifest.MF的默认清单放入您创建的任何Jar文件中。您可以通过修改默认清单来启用特殊的JAR文件功能,例如包密封。通常,修改默认清单涉及向清单中添加特殊用途的头,以允许JAR文件执行特定的所需功能

要修改清单,必须首先准备一个文本文件,其中包含要添加到清单的信息。然后使用Jar工具的m选项将文件中的信息添加到清单中。 警告:从中创建清单的文本文件必须以新行或回车结束如果最后一行没有以新行或回车结束,则无法正确分析该行。

基本命令的格式如下:

jar cfm jar-file manifest-addition input-file(s)
让我们看看此命令中使用的选项和参数:

我的一个例子
MANIFEST.MF

清单版本:1.0
Ant版本:ApacheAnt 1.8.3
主类:DataSummaryApplet
类路径:lib/plugin.jar
应用程序名称:appJSN
仅受信任:正确
权限:沙盒
创建人:1.7.0_51-b13(Oracle公司)
代码库:http://www.asitexx.com http://localhost

编辑:
1。) 大多数创建jar文件的IDE都使用build.xml。 如果您更改项目中的某些内容,则此文件始终是新创建的

如果您更改了以下内容,则可以进行测试:

<manifest>  
         <attribute name="Main-Class" value="${main.class}"/>  
</manifest>   

  • JNLP:
    硬编码的
    codebase=”http://192.168.0.17:8080/Secu/“

    只能在本地主机上工作

  • 导致java被阻止

原因

Java进一步增强了安全性,使用户系统不易受到外部攻击。
从Java 7 Update 51开始,Java不允许用户运行未签名(未签名)、自签名(未经可信机构签名)或缺少权限属性的应用程序。 运行应用程序所涉及的风险 未签名的应用程序

默认情况下,没有证书的应用程序(即未签名的应用程序)或缺少应用程序名称和发布者信息的应用程序将被阻止。运行此类应用程序可能不安全,并且存在更高的风险。 自签名应用程序(证书不是来自受信任的机构)

具有自签名证书的应用程序被阻止

应用程序名称属性

应用程序名称属性用于安全提示中,为已签名的RIA提供标题。建议使用此属性来帮助用户做出信任和运行RIA的决定。该值可以是任何有效字符串,例如:

应用名称:Hello World

如果JAR文件清单中不存在应用程序名属性

修改清单文件

在创建JAR文件期间,可以使用m命令行选项将自定义信息添加到清单中。本节介绍m选项

Jar工具会自动将路径名为META-INF/manifest.MF的默认清单放入您创建的任何Jar文件中。您可以通过修改默认清单来启用特殊的JAR文件功能,例如包密封。通常,修改默认清单涉及向清单中添加特殊用途的头,以允许JAR文件执行特定的所需功能

要修改清单,必须首先准备一个文本文件,其中包含要添加到清单中的信息
jar cfm jar-file manifest-addition input-file(s)
The c option indicates that you want to create a JAR file.
The m option indicates that you want to merge information from an existing file ...
The f option indicates that you want the output to go to a file (the JAR file) ...
manifest-addition is the name (or path and name) of the existing text file ....
jar-file is the name that you want the resulting JAR file to have.
The input-file(s) argument is a space-separated list of one or more files ....
<manifest>  
         <attribute name="Main-Class" value="${main.class}"/>  
</manifest>   
<manifest>  
         <attribute name="Main-Class" value="${main.class}"/>
         <attribute name="Application-Name" value="whatever"/>
         <attribute name="Trusted-Only" value="true"/>
         <attribute name="Permissions" value="sandbox"/>
         <attribute name="Codebase" value="http://www.asitexx.com http://localhost"/>
</manifest>  
<jnlp spec="6.0+" codebase="http://192.168.0.17:8080/Secu/" href="launch?param1=Hooolas">
<jnlp spec="6.0+" href="launch?param1=Hooolas">