2017-07-16 41 views
1

工作,我有一個代理JAR(JAR-具有依賴性)與倍美力爲javaagent不javaws的JNLP和

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,將監聽所有的事件。該課程還包含一個主要的方法。這個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\ 

但是,當我使用下面的CMD線PARAMS啓動它,代理不響應,但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我的情況下,資源庫,你需要找到的任何其他信息。

回答

1

發佈解決方案,以防萬一有人面臨同樣的問題。

您需要修改裏面你的JRE /斌/安全文件夾中的javaws.policy:

  • 備份舊文件
  • 授予{權限java.security替換現有文本.AllPermission; };