【问题标题】:javaagent not working with javaws and JNLPjavaagent 不能与 javaws 和 JNLP 一起使用
【发布时间】:2017-07-16 06:46:11
【问题描述】:

我有一个代理 JAR(jar-with-dependencies),其 premain 为

public static void premain(String args, Instrumentation instrumentation) {
    log.info("Starting Swing Testing Tools");
    log.info("Adding global listener using agent");
    Toolkit.getDefaultToolkit().addAWTEventListener(new GlobalEventListener(), GlobalEventListener.WINDOW_MASK);

    log.info("Starting server");
    Thread serverThread = new Thread(new InterceptorServer());
    serverThread.start();
}

这是一个拦截器 JAR,它将侦听所有事件。此类还包含一个 ma​​in 方法。此 JAR 的目的是拦截 JNLP,以便我们可以触发所有事件。

现在,当我使用以下命令运行此 JAR 时,代理工作正常。

D:\temp>java -jar ListenerAgent-1.0.jar
20170716,12.04.49 [INFO ] - (la.core.Agent.premain(Agent.java:16)) Starting Swing Testing Tools
20170716,12.04.49 [INFO ] - (la.core.Agent.premain(Agent.java:17)) Adding global listener using agent
20170716,12.04.49 [INFO ] - (la.core.Agent.premain(Agent.java:20)) Starting server
20170716,12.04.49 [INFO ] - (la.core.server.InterceptorServer.run(InterceptorServer.java:30)) Server started at port : 50173
C:\Users\GAGAND~1\AppData\Local\Temp\

但是当我使用以下命令行参数启动它时,代理没有响应但 JNLP 会打开。

D:\temp>javaws -J-javaagent:"D:\temp\ListenerAgent-1.0.jar" "D:\JNLPs\Notepad.jnlp"
D:\temp>

这是清单文件:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: Gagandeep Singh
Build-Jdk: 1.8.0_111
Specification-Title: ListenerAgent
Specification-Version: 0.0.1-SNAPSHOT
Implementation-Title: ListenerAgent
Implementation-Version: 0.0.1-SNAPSHOT
Implementation-Vendor-Id: org.gagan
Main-Class: la.core.Agent
Can-Redefine-Classes: false
Can-Retransform-Classes: true
Premain-Class: la.core.Agent

这是我的存储库的link,以防您需要查找任何其他信息。

【问题讨论】:

    标签: java swing javaagents spy


    【解决方案1】:

    发布解决方案,以防有人遇到同样的问题。

    你需要修改你的JRE/bin/security文件夹里面的javaws.policy:

    • 备份旧文件
    • 将现有文本替换为

      授予 { 权限 java.security.AllPermission; };

    【讨论】:

      【解决方案2】:

      已接受答案的替代方案:将 -J-Djava.security.policy=/path/to/custom/policy/file.policy 传递给 javaws 进程。

      该文件应包含

      grant {
          permission java.security.AllPermission;
      };
      

      这样,您不必修改系统策略。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-16
        • 2011-03-30
        • 2020-04-15
        • 2013-09-21
        • 2020-07-17
        • 1970-01-01
        • 1970-01-01
        • 2011-12-28
        相关资源
        最近更新 更多