当前位置: 首页 > 知识库问答 >
问题:

如何将安全策略文件添加到rmi应用程序的gradle构建中?

公西俊民
2023-03-14

谁能告诉我如何将java命令“-djava.security.policy=mysecurity.policy”添加到gradle构建中,用于java RMI应用程序。谢了。

这是我运行gradle run时得到的错误

//分级构建文件

apply plugin: 'java'
apply plugin: 'application'

mainClassName = 'identityserver.server.IdServer'

repositories{
    mavenCentral()
}

dependencies{
    compile "commons-cli:commons-cli:1.4"
}

jar {
    baseName = 'gs-gradle'
    version = '0.1.0'
}

sourceSets{
    main.java.srcDirs = ["src/identityserver/server", "src/identityserver/client"]
}

//Java rmi服务器类,设置了安全管理器

package identityserver.server;
import org.apache.commons.cli.*;

import java.awt.*;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;

public class IdServer extends UnicastRemoteObject implements ServerOperations{
    private static final long serialVersionUID = -5057719935941913677L;
    private static int registryPort = 1099;
    private Options options;
    private String[] args;
    private String name;

    public static void main(String[] args){
        IdServer idServer = null;
        try {
            idServer = new IdServer(args,"//IdServer");
        } catch (RemoteException e) {
            System.out.println("IdServer err: " + e.getMessage());
            e.printStackTrace();
        }

        if (args.length > 3){
            idServer.usage();
            System.exit(1);
        }

        idServer.parse();
        idServer.setupServer(idServer);
    }

    public IdServer(String[] args, String name) throws RemoteException{
        super();
        this.args = args;
        this.name = name;
        options = new Options();

        options.addOption("p","port",true, "port number");
        options.addOption("v", "verbose",false, "print detailed messages");

    }

    public void parse(){
        CommandLineParser parser = new DefaultParser();

        CommandLine cmd = null;
        try {
            cmd = parser.parse(options, args);

            if (cmd.hasOption("p")){
                System.out.println("Have port number " + cmd.getOptionValue("p"));

            }else if (cmd.hasOption("v")){
                System.out.println("Verbose!!!!");
            }
        } catch (ParseException e) {
//            e.printStackTrace();
            usage();
        }
    }

    private void usage(){
        System.err.println("Usage: java IdServer [--port <port#>][--verbose]");
    }

    public void setupServer(IdServer idServer){
        try {
            System.setSecurityManager(new SecurityManager());
            Registry registry = LocateRegistry.getRegistry(registryPort);
            registry.rebind("IdServer", idServer);
            System.out.println("IdServer bound in registry");
        } catch (RemoteException e) {
            e.printStackTrace();
            System.exit(1);
        }
    }
    @Override
    public String createAccount(String loginName) throws RemoteException {
        return "Account created without password";
    }

    @Override
    public String createAccount(String loginName, String realName, String password) throws RemoteException {
        return "Account created with password";
    }
}

共有1个答案

澹台欣怿
2023-03-14

您可以将jvm属性添加到测试配置中

test {
  systemProperties 'java.security.policy': file("$projectDir/mysecurity.policy").absolutePath
}
 类似资料:
  • 我想使用javascript访问一个网站。但我在控制台中遇到以下错误。 拒绝连接到'https://example.com'因为它违反了以下内容安全策略指令:“default src'self'”。请注意,未显式设置“connect src”,因此使用“default src”作为回退。 我在index.html中添加了以下meta标记, 元超文本传输协议-Equiv="内容-安全-策略"内容="

  • 我正在尝试添加添加到我的构建中。我已经下载了这个库,它是包含jar文件的目录。 我的团队正在使用gradle来构建项目,我知道的足够多,也许可以问正确的问题。所以我认为这个建筑正在做的是 复制一堆. bnds到构建目录 编译我们在src/main/java中的java(通过源代码ets.main.java.srcDir?) 我想添加lang3库,但是我不确定如何去做。我可以把它转储到src/mai

  • 我想从maven转到gradle。 在pom中。xml文件我有一个自定义存储库: 它是一个简单的超文本传输协议Web服务器,带有. jar文件。 如何将此自定义回购添加到生成中。格拉德尔? 我尝试了此代码,但不起作用: 我的定制repo不是maven repo,但我在Gradle文档中没有找到可以指定URL的其他示例。

  • 失败:生成失败,出现异常。 > 错误:任务“:app:MergedebugNativeLibs”执行失败。执行com.android.build.gradle.internal.tasks.workers时出错$ActionFacade文件“com.android.builder.files.zipcentraldirectory@53232d9e”已删除,但在缓存中找不到以前的版本 尝试:使用-

  • 我想在我的应用程序中添加带有,但一旦我将插件添加到我的应用程序中。yaml,我的应用程序不再运行。下面是错误 失败:生成失败,出现异常。 > 错误:任务执行失败:app:transformDexArchiveWithExternalLibsDexMergerForDebug'。 通用域名格式。Android建设者德兴。DexArchiveMergerException:合并dex存档时出错:/Us

  • 问题内容: 我正在使用gradle为2个小型android应用程序创建不同的样式,我想知道是否可以针对我的不同样式在build.gradle的xml文件中编辑应用程序名称。 问题答案: 你是什么意思?清单中的应用程序包名称或启动器中显示的应用程序名称? 如果是前者,请执行以下操作: 也可以覆盖应用程序名称,但您必须提供风味叠加资源。 因此,创建以下文件: 在其中,只需覆盖包含您的应用程序名称的字符