簡體   English   中英

為什么在我的 java 小程序中訪問被拒絕(java.lang.RuntimePermission setSecurityManager)?

[英]Why access denied (java.lang.RuntimePermission setSecurityManager) in my java Applet?

我有一個現有的非常非常舊的 java 小程序,它使用:

<dependency>
    <groupId>com.al6</groupId>
    <artifactId>rxtx</artifactId>
    <version>2.1.7</version>
</dependency>
<dependency>
    <groupId>java</groupId>
    <artifactId>plugin</artifactId>
    <version>1.6.12</version>
</dependency>

在項目的lib目錄下有:

  • RXTXcomm.jar

  • RXTXcomm.jar.sig

  • rxtxParallel.dll

  • rxtxSerial.dll

    org.apache.maven.plugins maven-jar-plugin sign.keyticket ticket ticket katana ${project.build.directory}/signed/${project.build.finalName}.jar 假
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>sign</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <keystore>.keyticket</keystore>
        <alias>ticket</alias>
        <storepass>ticket</storepass>
        <keypass>katana</keypass>
        <!--
            signedjar>${project.build.directory}/signed/${project.build.finalName}.jar</signedjar
        -->
        <verify>false</verify>
    </configuration>
</plugin>

項目在java 1.6環境下運行良好,由java 1.6服務器搭建。

但是,如果我在新的 java 1.8 服務器上構建它,並使用 java 1.8 運行,我會遇到很多 major.minor 錯誤,因為該項目使用了一些舊的子庫。

所以為了避免出現問題,我將其保存在 pom.xml 中:

<configuration>
    <source>1.6</source>
    <target>1.6</target>
    <encoding>UTF-8</encoding>
</configuration>

該項目編譯並運行,但我有一個:

訪問被拒絕 java.lang.RuntimePermission setSecurityManager)

在此處輸入圖像描述

我以為我的 jar 沒有簽名。 我看到用於簽名的現有“.keyticket”似乎沒有使用 java 1.8 的有效簽名級別。 所以我在構建機器上修改 java.security 以接受舊的簽名過程。 jar 似乎已簽名:

在此處輸入圖像描述

最后,我使用以下方法為我的 jar 生成一個新證書:

/opt/jdk/bin/keytool -genkey -keyalg RSA -alias myFirstKey -keystore myKeystore -validity 360

我在 maven 任務中添加新文件以對其進行簽名:

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>sign</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <keystore>myKeystore</keystore>
                    <alias>myFirstKey</alias>
                    <storepass>keypass</storepass>
                    <keypass>keypass</keypass>
                    <!--
                        signedjar>${project.build.directory}/signed/${project.build.finalName}.jar</signedjar
                    -->
                    <verify>false</verify>
                </configuration>
            </plugin>

現在它工作得很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM