Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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代码在7.0 21更新后不起签名作用_Java_Security_Code Signing - Fatal编程技术网

签名的Java代码在7.0 21更新后不起签名作用

签名的Java代码在7.0 21更新后不起签名作用,java,security,code-signing,Java,Security,Code Signing,我浏览过网络,尝试过很多东西,但都没有效果。首先,我不是Java大师,但我已经在这里完成了我的家庭作业,看起来它的签名是正确的,应该可以正常工作。这个应用程序是由其他人开发的,但我们有代码,在最新的Java版本之前,它一直运行良好。现在,它抛出了一个错误,该错误可以避免未签名。我们有一个GoDaddy证书,用于在build.xml中使用signjar对代码进行签名(我们使用的是Netbeans)。 有两个项目。一个用于访问串行端口以与电子秤通信(RXTXMyComm),另一个用于进行数据计算等(

我浏览过网络,尝试过很多东西,但都没有效果。首先,我不是Java大师,但我已经在这里完成了我的家庭作业,看起来它的签名是正确的,应该可以正常工作。这个应用程序是由其他人开发的,但我们有代码,在最新的Java版本之前,它一直运行良好。现在,它抛出了一个错误,该错误可以避免未签名。我们有一个GoDaddy证书,用于在build.xml中使用signjar对代码进行签名(我们使用的是Netbeans)。 有两个项目。一个用于访问串行端口以与电子秤通信(RXTXMyComm),另一个用于进行数据计算等(CWML)。RXTXSerial DLL还包括在名为RXTXSerial.native.jar的jar中

首先,我们使用以下build.xml编译并构建RXTX项目(parital以显示其签名方式): `


构建、测试和运行项目RXTXCommMY。
`

这些JAR随后包含在CWML项目中,其构建如下: `


`

jnlp如下所示: `


缩放小程序
缩放小程序
`

我通过Janela验证器检查过了,没问题

它在Netbeans中运行并工作,在update 21之前工作良好。我还发现,如果我从jnlp中删除标记,它可以在IE和Java7.021中工作,但在Chrome中不起作用。当我在Chrome中运行Java控制台时,我得到以下信息:

`

加载gnu.io.RXTXCommDriver时引发的
java.lang.ExceptionInInitializeError错误
线程“thread-15”java.lang.ExceptionInInitializeError中出现异常
位于cmwl.ioport.PortHelper.getAvailablePorts(PortHelper.java:49)
位于cmwl.ioport.PortHelper.connectSerialPorts(PortHelper.java:64)
运行(PortHelper.java:42)
原因:java.security.AccessControlException:拒绝访问(“java.util.PropertyPermission”“sun.arch.data.model”“读取”)
位于java.security.AccessControlContext.checkPermission(未知源)
位于java.security.AccessController.checkPermission(未知源)
位于java.lang.SecurityManager.checkPermission(未知源)
位于sun.plugin2.applet.AWTAppletSecurityManager.checkPermission(未知源)
位于java.lang.SecurityManager.checkPropertyAccess(未知源)
位于java.lang.System.getProperty(未知源)
位于gnu.io.CommPortIdentifier。(CommPortIdentifier.java:123)
... 3个以上
` 我进行了更详细的跟踪,结果显示三个罐子的证书都经过了验证。我不知所措,因为这给我们带来了大问题。正在调用的第123行是:


loadLibrary(“rxtxSerial.+System.getProperty(“sun.arch.data.model”);


任何帮助都将不胜感激。正如我所说,我根本不是Java爱好者,只是继承了这个应用程序。

你的问题看起来就像我最近遇到的问题。原因似乎是在本机库加载过程中。尝试按如下方式重新编写初始化代码:

AccessController.doPrivileged(new PrivilegedAction() {
  public Object run() {
    System.loadLibrary(...);
    System.loadLibrary(...);
    return null;
  }
});

另外,我在清单中添加了Trusted Library:True,然后它告诉我我正在尝试以受信任的身份运行一个沙盒应用程序。谢谢!我试过了,但是当它试着做这个特权的时候,我仍然得到了一个错误。我猜这一定与它的签名方式有关,但我被难住了。
<target name="-post-jar">
        <tstamp>
            <format property="build.timestamp" pattern="yyyyMd_HmsS" />
        </tstamp>

        <filter token="build.timestamp" value="${build.timestamp}" />

        <basename property="jarFilename" file="${dist.jar}" suffix=".jar" />
        <signjar jar="${dist.jar}" storetype="pkcs12" storepass="MYPASS" alias="CWML's godaddy.com, inc. id" keystore="../CERTNAME.p12" signedjar="dist/${jarFilename}_v${build.timestamp}.jar" />
        <delete file="${dist.jar}" />

        <copy file="index.html" todir="dist" filtering="true" />
        <copy file="cwml.jnlp" todir="dist" filtering="true" />
    </target>
<?xml version="1.0" encoding="UTF-8"?>
<jnlp>
    <information>
        <title>Scale Applet</title>
        <vendor>Scale Applet</vendor>
    </information>

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

    <resources>
        <j2se version="1.7+" />
        <jar href="CWML_v2013427_153155832.jar" main="true" />
        <jar href="lib/RXTXCommMY.signed.jar?v=2013427_153155832" />
        <nativelib href="lib/rxtxSerial.native.signed.jar?v=2013427_153155832" />
    </resources>

    <applet-desc name="ScaleApplet" main-class="cwml.ScaleApplet" width="200" height="40">
    </applet-desc>
</jnlp>
java.lang.ExceptionInInitializerError thrown while loading gnu.io.RXTXCommDriver
Exception in thread "Thread-15" java.lang.ExceptionInInitializerError
    at cmwl.ioport.PortHelper.getAvailablePorts(PortHelper.java:49)
    at cmwl.ioport.PortHelper.connectSerialPorts(PortHelper.java:64)
    at cmwl.ioport.PortHelper.run(PortHelper.java:42)
Caused by: java.security.AccessControlException: access denied ("java.util.PropertyPermission" "sun.arch.data.model" "read")
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at sun.plugin2.applet.AWTAppletSecurityManager.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
    at java.lang.System.getProperty(Unknown Source)
    at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:123)
    ... 3 more
AccessController.doPrivileged(new PrivilegedAction() {
  public Object run() {
    System.loadLibrary(...);
    System.loadLibrary(...);
    return null;
  }
});